Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠子表更新父对象_Java_Hibernate - Fatal编程技术网

Java 休眠子表更新父对象

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

我有下面这样的桌子

角色:

用户:

我已经为这两个表创建了POJO和hibernate映射文件

映射文件:

//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);