hibernate用了很久,但总是稀里糊涂,是时候总结下了,今天做了个例子,还是遇到了不少问题
<class name="Person" table="Person" dynamic-update="true" lazy="true"> <cache usage="read-write" region="cacheDemo"/> <id name="id" column="id" type="integer" unsaved-value="null"> <generator class="native"></generator> </id> <property name="name" column="name" type="string"></property> <property name="age" column="age" type="integer"></property> <set name="phones" lazy="true"> <key column="person_id"></key> <one-to-many class="Phone"/> </set> </class>
<class name="Phone" table="Phone" dynamic-update="true"> <id name="id" column="id" type="integer" unsaved-value="null"> <generator class="native"></generator> </id> <property name="num" column="num" type="string"></property> <!-- --> <many-to-one name="person" class="Person" column="person_id"></many-to-one> </class>
public void testSave(){
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Person p = new Person();
p.setAge(18);
p.setName("smith2");
Phone phone = new Phone();
phone.setNum("5555");
phone.setPerson(p);
Set<Phone> phones = new HashSet<Phone>();
phones.add(phone);
p.setPhones(phones);
//只保存person,看啥结果
session.save(p);
session.getTransaction().commit();
session.close();
}
不幸的是,报错了
Hibernate: insert into Person (name, age) values (?, ?) Hibernate: update Phone set person_id=? where id=? 2011-10-28 14:37:55,339 ERROR org.hibernate.jdbc.AbstractBatcher.doExecuteBatch:51 - Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1