gpt4 book ai didi

java - Hibernate子表更新父对象

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:33 26 4
gpt4 key购买 nike

我有如下表,

角色:

Role_Id    Role_Name
201 Manager
202 Supervisor

用户:

User_ID   User_Name  Role_Id
1 John 201
2 Peter 202
3 Raj 202

我已经为两个表创建了 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>

当我通过 hibernate 在用户表中插入用户详细信息时,我应该获取角色引用并使用用户对象设置它,还是直接在用户表中添加“角色ID”。

例如,

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

哪种方法最好?第一还是第二?

最佳答案

我假设用户角色关联是多对一且单向关联。

UserVO实例中设置RoleVO对象是使用hibernate作为映射文件指示在数据库中插入UserVo对象的唯一方法:

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

我建议你检查这个hibernate tutorial欲了解更多信息。

关于java - Hibernate子表更新父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com