Stijn de Witt wrote:

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]



Reply via email to