@ManagedBean
@SessionScoped
public class User {
private Person person;
...
user.hbm.xml休眠:一到一個插入到數據庫,而不是要更新
<hibernate-mapping>
<class name="entry.User" table="users">
<id name="usaa">
<generator class="increment"/>
</id>
<property name="username" column="username"/>
<property name="password" column="password"/>
<property name="enabled" column="enabled"/>
<many-to-one name="person" class="entry.Person" column="perid" not-null="true" cascade="all" unique="true"/>
</class>
</hibernate-mapping>
person.hbm.xml
<hibernate-mapping>
<class name="entry.Person" table="person">
<id name="id" column="perid">
<generator class="increment"/>
</id>
<property name="firstName" column="firstname"/>
<property name="lastName" column="lastname"/>
<property name="middleName" column="middlename"/>
<property name="dob" column="dob"/>
</class>
</hibernate-mapping>
相關實體
因此,上面設計的one-to-one
關係。
public void createUser(User user) {
user.setPerson(new Person());
getHibernateTemplate().save(user);
..
時User
插入到數據庫,即Person
插入數據庫自動also.It的確定:
正常工作DAO方法。
不料工作DAO方法:
public void editUser(User user, Person person) {
user.setPerson(person);
getHibernateTemplate().update(user);
...
問題發生了,當User
與新Person
數據進行更新。
生成新的人員ID和將一個新行插入到人員表中。
如何做到這一點,Person
適當的行要更新而不是插入?
謝謝你的幫助。
假設:
我認爲,這個問題是在自增id
■當參考的實體。
看起來,在方法調用update
或saveOrUpdate
的情況下應該避免自動增量。
當實體首次創建並插入數據庫時,應該調用自動增量。
感謝您的回覆。我無法理解從哪裏得到'oldPersonId' – sergionni 2012-03-14 15:17:22
ManuPK,非常感謝,我理解您的觀點,只是閱讀,您以粗體輸入))) – sergionni 2012-03-14 16:04:08