Java 休眠子表更新父对象
我有下面这样的桌子 角色: 用户: 我已经为这两个表创建了POJO和hibernate映射文件 映射文件:Java 休眠子表更新父对象,java,hibernate,Java,Hibernate,我有下面这样的桌子 角色: 用户: 我已经为这两个表创建了POJO和hibernate映射文件 映射文件: //RoleVO <class name="RoleVO" table="tbl_Role"> <id name="roleId" column="role_Id" > <generator class="identity"/> </id> <property
//RoleVO
<class name="RoleVO" table="tbl_Role">
<id name="roleId" column="role_Id" >
<generator class="identity"/>
</id>
<property name="roleName" column="Role_Name" />
</class>
//UserVO
<class name="UserVO" table="tbl_User">
<id name="userId" column="user_Id" >
<generator class="identity"/>
</id>
<property name="userName" column="User_Name" />
<many-to-one name="Role" class="RoleVO" column="Role_Id"/>
</class>
哪种方法最好?第一个还是第二个?我假设用户角色关联是多对一和单向关联 在
UserVO
实例中设置RoleVO
对象是使用hibernate作为映射文件在数据库中插入UserVO
对象的唯一方法。请指出:
<many-to-one name="Role" class="RoleVO" column="Role_Id"/>
我建议您检查此项以了解更多信息。我假设用户角色关联是多对一和单向关联 在
UserVO
实例中设置RoleVO
对象是使用hibernate作为映射文件在数据库中插入UserVO
对象的唯一方法。请指出:
<many-to-one name="Role" class="RoleVO" column="Role_Id"/>
我建议您检查此项以了解更多信息。您是否可以编写hibernate映射代码,以便用户能够给您提供充分的答案?第二种方法,IMHO,第一种方法将不起作用,正如您在
多对一关联中向hibernate指出的,您将给角色
对象一个数字,请记住,hibernate是面向对象的关系映射,而不是面向字段的关系映射!我还将考虑附加构造函数的概念,这些构造函数采用参数,这样你就可以通过编写诸如<代码>新的UserVO(“库马尔”,Session。GET(RooVo.C类,202))<代码> >来构造你的<代码> UserVO <代码>。你可以编写Hibernate映射代码,这样用户就可以给你一个适当的答案吗?第二个,IMHO,第一种方法不起作用,正如您在多对一
关联中指出的那样,您将为角色
对象指定一个数字,请记住,hibernate是面向对象的关系映射,而不是面向字段!我还将考虑附加构造函数的概念,这些构造函数采用参数,这样你就可以通过编写诸如<代码>新的UserVO(“库马尔”),Session。GET(RooVo.C类,202)< /COD>来构造你的<代码> UserVO <代码>。
//First approach:
UserVO usr = new UserVO();
usr.serUserName("Kumar");
usr.setRoleId(202);
session.save(usr);
or
//Second Approach:
UserVO usr = new UserVO();
usr.serUserName("Kumar");
RoleVO role = session.get(RoleVO.class, 202);
usr.setRole(role);
session.save(usr);
<many-to-one name="Role" class="RoleVO" column="Role_Id"/>
UserVO user = new UserVO();
//Set user info
...
RoleVO role = (RoleVO) session.get(RoleVO.class, 202);
user.setRole(role);
session.save(user);