Hi,

I am not sure wether my construct can be done with castor jdo, so let 
me explain:

Lets say we have a customer table and an order table. Every order has 
one customer associated, so we have a one-to-many mapping.
This works fine.

For some reason I want to have a field (column) in customer that 
normally is null, but sometimes refers to one specific order of that 
customer.
So I added this field and the mapping, everything is fine but to the 
point, where I want to update my customer with a specific order, this 
results in an "not created within this transaction", which is correct 
as both instances already exists in the database and are not created 
within one transaction. I use long transactions as described in the 
documentation, all mappings are with <cache-type type="unlimited"> to 
avoid expiration.

My code looks something like this, part I _OR_ part II are used 
before Part III, which is my problem. Very simplified just to give a 
rough idea:

// Part I:
Customer customer = (Customer)db.load(Customer.class,somekey);
...
Order order = new Order();
order.setCustomer(cust);
order.setXYZ();
db.create(order);
...

// Part II:
Customer customer = (Customer)db.load(Customer.class,somekey);
Order order = null;
OQLQuery oql = db.getOQLQuery("SELECT o FROM my.Order o WHERE 
customer = $1 AND somecondition = $2");
oql.bind(customer);
oql.bind(condition);
QueryResults resset = oql.execute();
if (resset.hasMore()) {
        order = (Order) resset.nextElement();
}

//Part III:
if (order.isCondition()) {
        db.begin();
        order.setBla(foo);
        customer.setSpecialOrder(order);
        db.update(order);
        db.update(customer);
        db.commit();
}

I tried to reload the order by doing a db.load(order.getId()), but 
this leads to _another_ Customer instance (with the same id) being 
loaded in the new Order instance.

The only solution I see is to just store the Id of the order inside 
customer as plain Integer, so I can load the instance from the data 
base by id manually. Do I miss something?

Bernd

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to