Hi Armin,
Here are my OJB.properties (I stripped the comments for brevity):
hmm, seems ok. If you don't change the default configuration (except your DB settings and sequence manager if needed) you should see your changes.
> ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheEmptyImpl shouldn't cause problems (for objects without circular references)
Try to set log level for class org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl to debug or better use p6spy to log the invoked sql-statements.
http://db.apache.org/ojb/faq.html#How%20can%20I%20trace%20and/or%20profile%20SQL%20statements%20executed%20by%20OJB?
regards, Armin
----- repositoryFile=repository.xml useSerializedRepository=false serializedRepositoryPath=. PersistenceBrokerFactoryClass=org.apache.ojb.broker.core.PersistenceBrokerFa ctoryDefaultImpl PersistenceBrokerClass=org.apache.ojb.broker.core.PersistenceBrokerImpl maxActive=100 maxIdle=-1 maxWait=2000 timeBetweenEvictionRunsMillis=-1 minEvictableIdleTimeMillis=1000000 whenExhaustedAction=0 ConnectionFactoryClass=org.apache.ojb.broker.accesslayer.ConnectionFactoryPo oledImpl ConnectionManagerClass=org.apache.ojb.broker.accesslayer.ConnectionManagerIm pl SqlGeneratorClass=org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultI mpl StatementManagerClass=org.apache.ojb.broker.accesslayer.StatementManager StatementsForClassClass=org.apache.ojb.broker.accesslayer.StatementsForClass Impl JdbcAccessClass=org.apache.ojb.broker.accesslayer.JdbcAccessImpl ObjectCacheClass=org.apache.ojb.broker.cache.ObjectCacheEmptyImpl descriptorBasedCaches=false LockManagerClass=org.apache.ojb.odmg.locking.LockManagerDefaultImpl LockMapClass=org.apache.ojb.odmg.locking.InMemoryLockMapImpl LockTimeout=60000 ImplicitLocking=true LockServletUrl=http://127.0.0.1:8080/ojb-lockserver LockAssociations=WRITE LoggerClass=org.apache.ojb.broker.util.logging.Log4jLoggerImpl LoggerConfigFile=log4j.properties ROOT.LogLevel=DEBUG DEFAULT.LogLevel=INFO org.apache.ojb.broker.core.PersistenceBrokerImpl.LogLevel=WARN org.apache.ojb.broker.core.PersistenceBrokerFactoryDefaultImpl.LogLevel=DEBU G org.apache.ojb.broker.metadata.RepositoryXmlHandler.LogLevel=WARN org.apache.ojb.broker.metadata.ConnectionDescriptorXmlHandler.LogLevel=WARN org.apache.ojb.broker.accesslayer.JdbcAccessImpl.LogLevel=WARN org.apache.ojb.broker.accesslayer.RsIterator.LogLevel=WARN org.apache.ojb.broker.accesslayer.StatementsForClassImpl.LogLevel=WARN org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl.LogLevel=WARN org.apache.ojb.broker.metadata.RepositoryPersistor.LogLevel=WARN org.apache.ojb.broker.accesslayer.ConnectionFactoryAbstractImpl.LogLevel=WAR N org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.LogLevel=WARN ODMG.LogLevel=DEBUG JDO.LogLevel=DEBUG performance.LogLevel=INFO soda.LogLevel=WARN ConfigurableFactory.LogLevel=WARN OqlCollectionClass=org.apache.ojb.odmg.collections.DListImpl_2 SqlInLimit=200 DListClass=org.apache.ojb.odmg.collections.DListImpl_2 DArrayClass=org.apache.ojb.odmg.collections.DListImpl_2 DMapClass=org.apache.ojb.odmg.collections.DMapImpl DBagClass=org.apache.ojb.odmg.collections.DBagImpl DSetClass=org.apache.ojb.odmg.collections.DSetImpl PersistentFieldClass=org.apache.ojb.broker.metadata.fieldaccess.PersistentFi eldDirectAccessImpl OJBTxManagerClass=org.apache.ojb.odmg.LocalTxManager JTATransactionManagerClass=org.apache.ojb.odmg.transaction.JBossTransactionM anagerFactory -----
-Stijn
----- Original Message ----- From: "Armin Waibel" <[EMAIL PROTECTED]>
To: "OJB Users List" <[EMAIL PROTECTED]>
Sent: Wednesday, April 28, 2004 5:14 PM
Subject: Re: Update problem using PersistenceBroker api
Hi Stijn,
do you use OJB default settings (OJB.properties)? Your test seems ok.
regards, Armin
Stijn de Witt wrote:
I have created a test program that attempts to load a Candidate from the database with lastName="Tester". If none is found it creates a new one.
It
then sets the title field to a random string and stores the object.
On the first run, no candidate is found (as expected) and a new one is created and stored correctly. On the second run, the candidate stored
before
is found correctly, and the title is set to a new random string. broker.store() is called and finishes with no errors. When I look in the database however, the title field is not changed...
What am I doing wrong?
-Stijn
package nl.bergland.codamo;
import java.util.*; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.apache.ojb.broker.PersistenceBrokerFactory; import org.apache.ojb.broker.PersistenceBroker; import org.apache.ojb.broker.query.*;
public class OjbTester { private static final Logger logger = LogManager.getLogger(OjbTester.class.getName()); /** Creates a new instance of Test */ public OjbTester() { }
public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties");
logger.info("main: Starting..."); logger.info("main: Getting persistence broker..."); PersistenceBroker broker = null; try { broker =
PersistenceBrokerFactory.defaultPersistenceBroker();
logger.info("main: Creating query criteria..."); Criteria crit = new Criteria(); logger.info("main: Set criteria lastName==\"Tester\"..."); crit.addEqualTo("lastName", "Tester"); logger.info("main: Create query..."); Query q = QueryFactory.newQuery(Candidate.class, crit); logger.info("main: Fire query for a Candidate with lastName
==
\"Tester\"..."); Collection results = broker.getCollectionByQuery(q); logger.info("main: Get result (if any)..."); broker.close();
broker =
PersistenceBrokerFactory.defaultPersistenceBroker();
logger.info("main: Starting transaction..."); broker.beginTransaction(); Iterator it = results.iterator(); Candidate candidate; if (it.hasNext()) { logger.info("main: Found a candidate..."); candidate = (Candidate) it.next(); } else { logger.info("main: No candidate found, create new..."); candidate = new Candidate(); candidate.setFirstName("Tommy"); candidate.setLastName("Tester"); }
logger.info("main: Assign availableFrom as current
Date...");
candidate.setAvailableFrom(new java.sql.Date(new java.util.Date().getTime()));
logger.info("main: Set random title..."); Random rand = new Random(); byte[] bytes = new byte[4]; rand.nextBytes(bytes); String title = new String(); for (int i=0; i<bytes.length; i++) { Byte bt = new Byte(bytes[i]); title += bt.toString(); }
logger.info("main: Set candidate.title == " + title +
"...");
candidate.setTitle(title);
logger.info("main: Trying to store candidate..."); broker.store(candidate); logger.info("main: Stored candidate " + candidate.getId());
logger.info("main: Commit transaction..."); broker.commitTransaction(); } catch(Exception e) { if (broker == null) logger.error("main: ERROR getting persistence broker: "
+
e.getMessage()); else { logger.error("main: ERROR: " + e.getMessage()); if (broker.isInTransaction()) { logger.error("main: Rollback Transaction..."); broker.abortTransaction(); } } } finally { if (broker != null) broker.close(); }
logger.info("main: Done."); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
