Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > XDoclet, Hibernate и отношение one-to-many?


Автор: Samik 2.12.2005, 14:24
Здравствуйте,
столкнулся с такой трудностью,
есть два класса с1 и с2 им соответствуют таблицы t1 и t2,
отношение один ко многим так вот в классе с1 есть
set
Код


/**
* @hibernate.set cascade="save-updatel"
* @hibernate.collection-key column="CUSTOMER_ID"
* @hibernate.collection-one-to-many  class="c2"
*/


в классе с2
Код

/**
* @hibernate.many-to-one column="CUSTOMER_ID" not-null="true" 
*/


когда в JUnit
Transaction tx = session.beginTransaction();
Код

c1 theCust = new c1();
c2 theAirType = new c2();
theCust.setName("cust1");
theAirType.setName("type1");
theCust.getC2().add(theAirType);
session.saveOrUpdate(theCust);
tx.commit();





так вот когда выполняется save или saveOrUpdate и так как установлено cascade="save-update",
то сначала он вставляет запись theCust затем theAirType со значеием null a поле внешнего ключа, затем изменяет theAirType(CUSTOMER_ID), проблема в том что
CUSTOMER_ID not-null=true поэтому он не может вставить новую запись, как это можно поправить без явного save theAirType и последующего load и добавление уже существующего объекта theCust.getC2().add(theAirType);
Есть ли такие параметры у Hibernate?

Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)