I encountered this problem a while back. But basically you need to modify
something after you've locked the object. For exampled, here is the working
sample code:
tx = odmg.newTransaction();
tx.begin();
tx.lock(object, tx.WRITE);
object.setModifiedDate(DateUtil.getCurrentDateTime());
tx.commit();
Hope this helps.
-----Original Message-----
From: Gibbs, Tim [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, January 07, 2003 12:51 PM
To: 'OJB Users List'
Subject: RE: Insertion problems
Ilya
I haven't used the ODMG API but from what little I do know from your example
below you have:
Transaction tx = null;
// 3. open transaction
tx = odmg.newTransaction();
tx.begin();
// 4. acquire write lock on new object
tx.lock(employee, Transaction.WRITE);
// 5. commit transaction
tx.commit();
But this does not seem to be doing the insert anywhere (it just seems to do
a lock). I pulled the following from the OneToManyTest.java in the tests
with OJB and found the following sequence of what appears to be an
insertion:
Transaction tx = odmg.newTransaction();
tx.begin();
db.makePersistent(myZoo);
tx.commit();
You appear to be missing the db.makePersistent part which is a seperate
operation from locking.
Hope this helps.
Cheers,
Tim
--------------------------------------------
Tim Gibbs
RBC Capital Markets
Phone: (416) 842-4663
E-Mail: [EMAIL PROTECTED]
-----Original Message-----
From: Ilya Scharrenbroich [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, January 07, 2003 1:35 PM
To: OJB Users List
Subject: Insertion problems
Hi, Im having a problem inserting objects (version="0.9.8"). I can select
objects from the DB if I insert them beforehand. Also I got tutorial2 to run
with MSSQL fine, inserting, updating etc. I'm not getting any exceptions or
stack traces when I execute the code below.
Thanks,
Ilya
public class Test {
Implementation odmg;
public static void main( String[] args ){
Test test = null;
try{
Implementation odmg = OJB.getInstance();
Database db = odmg.newDatabase();
db.open("repository.xml", Database.OPEN_READ_WRITE);
test = new Test(odmg);
}catch(Exception e){
e.printStackTrace();
System.exit(1);
}
test.insertNewEmployee("Ilya S");
test.listAllEmployees();
}
public Test( Implementation impl ){
this.odmg = impl;
}
public void insertNewEmployee( String name ){
System.out.println("inserting new employee");
// 1. this will be our new object
Employee employee = new Employee();
// 2. now read in all relevant information and fill the new object:
employee.setName(name);
// now perform persistence operations
Transaction tx = null;
// 3. open transaction
tx = odmg.newTransaction();
tx.begin();
// 4. acquire write lock on new object
tx.lock(employee, Transaction.WRITE);
// 5. commit transaction
tx.commit();
}
public void listAllEmployees(){
System.out.println("The list of available products:");
try
{
// 1. open a transaction
Transaction tx = odmg.newTransaction();
tx.begin();
// 2. get an OQLQuery object from the ODMG facade
OQLQuery query = odmg.newOQLQuery();
// 3. set the OQL select statement
query.create("select allEmployees from " +
Employee.class.getName());
// 4. perform the query and store the result in a persistent
Collection
DList allProducts = (DList) query.execute();
tx.commit();
// 5. now iterate over the result to print each product
java.util.Iterator iter = allProducts.iterator();
while (iter.hasNext())
{
System.out.println(iter.next());
}
}
catch (Throwable t)
{
t.printStackTrace();
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
<font face="Times New Roman" size="3">
<p>-------------------------------------------------------------------------
-----</p>
<p> This e-mail may be privileged and/or confidential, and the sender does
not waive any related rights and obligations. Any distribution, use or
copying of this e-mail or the information it contains by other than an
intended recipient is unauthorized. If you received this e-mail in error,
please advise me (by return e-mail or otherwise) immediately.</p>
<p> Ce courriel est confidentiel et prot�g�. L'exp�diteur ne renonce pas aux
droits et obligations qui s'y rapportent. Toute diffusion, utilisation ou
copie de ce message ou des renseignements qu'il contient par une personne
autre que le (les) destinataire(s) d�sign�(s) est interdite. Si vous recevez
ce courriel par erreur, veuillez m'en aviser imm�diatement, par retour de
courriel ou par un autre moyen.</p>
<p>====================================================</p>
</font>
_________________________________________________________________________
Introducing the all new and improved continental.com. With a totally new personalized
design, it's the best place to go. Before you go.
Continental Airlines. Work Hard. Fly Right.
http://www.continental.com
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>