class User{
int uid;
String name;
Card card;
...
}class Card{
int cid;
String cardNo;
User user;
}<class name="User" table="User">
<id name="uid" column="uid">
<generator class="foreign">
<param name="property">card</param>
</generator>
</id>
<property name="name"></property>
<one-to-one name="card" constrained="true" cascade="all"></one-to-one>
</class> <class name="Card" table="Card" catalog="ssh">
<id name="cid">
<generator class="assigned"></generator>
</id>
<property name="cardNo"></property>
<one-to-one name="user" cascade="all"></one-to-one>
</class> 我想修改Card中的cid 同时影响到User中的uid的修改 但是这样会报错:
org.hibernate.HibernateException: identifier of an instance of Card was altered from 1 to 2请问要实现我的目的应该怎么做才行
int uid;
String name;
Card card;
...
}class Card{
int cid;
String cardNo;
User user;
}<class name="User" table="User">
<id name="uid" column="uid">
<generator class="foreign">
<param name="property">card</param>
</generator>
</id>
<property name="name"></property>
<one-to-one name="card" constrained="true" cascade="all"></one-to-one>
</class> <class name="Card" table="Card" catalog="ssh">
<id name="cid">
<generator class="assigned"></generator>
</id>
<property name="cardNo"></property>
<one-to-one name="user" cascade="all"></one-to-one>
</class> 我想修改Card中的cid 同时影响到User中的uid的修改 但是这样会报错:
org.hibernate.HibernateException: identifier of an instance of Card was altered from 1 to 2请问要实现我的目的应该怎么做才行
把配置文件改成这样试一试,然后在生成一下表看看行不,因为你的那个配置文件上的关系是user表上的uid是参照card表上的cid的,也就是说只有cid改了的话,uid才会跟着改,反过来则不行。
<class name="User" table="User">
<id name="uid" column="uid">
<generator class="assign"/>
</id>
<property name="name"> </property>
<one-to-one name="card" cascade="all"> </one-to-one>
</class> <class name="Card" table="Card" catalog="ssh">
<id name="cid">
<generator class="foreign">
<param name="property">user </param>
</generator>
</id>
<property name="cardNo"> </property>
<one-to-one name="user" constrained="true" cascade="all"></one-to-one>
</class>
org.hibernate.HibernateException: identifier of an instance of Card was altered from 1 to 2
class User{
Long uid;//一定成Long
String name;
Card card;
...
}class Card{
Long cid;//一定要成Long
String cardNo;
User user;
}
cid 是主键
<class name="User" table="User">
<id name="uid" column="uid">
<generator class="assign"/>
</id>
<property name="name"> </property>
<one-to-one property-ref="user" name="card" cascade="all"> </one-to-one>
</class> <class name="Card" table="Card" catalog="ssh">
<id name="cid">
<generator class="foreign">
<param name="property">user </param>
</generator>
</id>
<property name="cardNo"> </property>
<one-to-one unique="true" name="user" cascade="all"> </one-to-one>
</class>