@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>
을 업데이트의 DB에 삽입 된 일대일 관련 엔티티
따라서, one-to-one
위의 관계를 설계했습니다.
제대로 작동 DAO 방법 : Person
는 DB 자동으로 also.It의 확인에 삽입되어 있는지User
가 DB에 삽입
public void createUser(User user) {
user.setPerson(new Person());
getHibernateTemplate().save(user);
..
.
예기치 않게 작동 DAO 방법 : User
뉴 Person
데이터로 업데이트 될 때
public void editUser(User user, Person person) {
user.setPerson(person);
getHibernateTemplate().update(user);
...
문제가 발생 하였다.
새 사용자 ID가 생성되고 새 행 하나가 Person 테이블에 삽입되었습니다..
어떻게 하시겠습니까? Person
해당 행 업데이트가 삽입되지 않았습니까?
도움 주셔서 감사합니다.
가정 :
나는 가정, 그 문제는 개체를 참조 할 때 id
들 autoincrementing입니다.
update
또는 saveOrUpdate
메서드 호출의 경우에는 자동 증가를 피해야합니다.
엔티티가 처음 생성되어 DB에 삽입 될 때 자동 증가가 호출되어야합니다.
답장을 보내 주셔서 감사합니다. 'oldPersonId'를 어디서 얻을 수 있는지 이해할 수 없습니다. – sergionni
ManuPK, 고마워요, 요점을 이해하고, 굵은 글씨로 입력했습니다.))) – sergionni