读书人

Hibernate annotation配备方式的Mappe

发布时间: 2013-03-25 15:43:04 作者: rapoo

Hibernate annotation配置方式的MappedBy使用详解

Hibernate annotation配备方式的MappedBy使用详解
?
?

从多方插入就不再累述了.

?

这里就试着从不维护关系的一方来插入:


?

虽然插入了..但是外键却没有值

一方不维护关系就可以明显的看出来,

?

但是一方的其他不影响关系的更新操作是没有问题的:

    Classroom cr=(Classroom)session.get(Classroom.class, 1);    System.out.println(cr.getUsers().iterator().next().getUname());    cr.getUsers().iterator().next().setUname("XX");

?执行以上的代码:

显示:

Hibernate: select classroom0_.cid as cid1_0_, classroom0_.cname as cname1_0_ from Classroom classroom0_ where classroom0_.cid=?

Hibernate: select users0_.cid as cid1_1_, users0_.uid as uid1_, users0_.uid as uid0_0_, users0_.cid as cid0_0_, users0_.uname as uname0_0_, users0_.upass as upass0_0_ from User users0_ where users0_.cid=?

cc

Hibernate: update User set cid=?, uname=?, upass=? where uid=?

?

数据在数据库里也被正常更新

?

这样一番实验坐下来就可以很清楚的感觉到

mappedBy只是确定了由谁来维护关系而已 其他的操作并不影响.

?

一般情况下 如果要让两方都可以维护关系 我自己是在OneToMany后写JoinColumn 然后和ManyToOne里的外键列名取一样的。

当然也可以不写JoinColumn 来生成一个第三方表记录关系 但这样做没什么必要 相同的关系会被存两次.

?

?

读书人网 >其他数据库

热点推荐