求一hibernate 简单映射关联关系的配置。
我有一个表里user 里面有 ID,SID两个字段 ID是自增的 然后还有一张表是po表 里面有 id,name,age三个字段
现在我要查询 SID=id的po表里面的集合。请问在hibernate的User.hbm.xml里面和User.java里面该如何映射这种关联关系 进行查询?
------解决方案--------------------
user.hbm 配置
<set name="roles" table="t_user_role">
<key column="userid"></key>
<many-to-many class="hbm.Role" column="roleid"></many-to-many>
</set>
class user
private Set<Role> roles=new HashSet<Role>();
role.hbm 配置
<set name="users" table="t_user_role">
<key column="roleid"></key>
<many-to-many class="hbm.User" column="userid"></many-to-many>
</set>
class role
private Set<User> users=new HashSet<User>();
//建个t_user_role表,放user跟role的id
在做user添加的时候,user.getroles要有role.roleid
关联查询
select user from User user left join fetch user.roles
------解决方案--------------------
刚给你的是多对多的关联
你的是1对1的吧
配置如下
user.hbm 配置
<one-to-one name="poid" class="po" update="true" insert="true" fetch="select" cascade="all" />
po表的主键是引用user主键的外键,两张表的主键值必须相同。
------解决方案--------------------
是多对多关联
1个用户可以有多个name ,一个name被多个用户所拥有
你少了张表
加张表t_user_po
这张表只放userid 和poid ,不用主键
user.hbm 配置
<set name="pos" table="t_user_po">
<key column="userid"></key>
<many-to-many class="hbm.po" column="poid"></many-to-many>
</set>
//这句话的意思,在class user 中的pos存放着 t_user_po 中关联hbm.po的poid,关联建是userid
class user
private Set<po> pos=new HashSet<po>();
po.hbm 配置
<set name="users" table="t_user_po">
<key column="poid"></key>
<many-to-many class="hbm.User" column="userid"></many-to-many>
</set>
这句话的意思,在class po中的users存放着 t_user_po 中关联hbm.user的userid,关联建是poid
class po
private Set<User> users=new HashSet<User>();