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]