我有两个表Users(id,name,email,role_id)
和role(id,type)
我使用@ManyToOne (cascade=CascadeType.ALL)
作用,因为它的一个新的角色是越来越插入每次用户豆 。 但我希望用户使用角色表的现有条目。 请帮忙休眠:多对一映射两个表
0
A
回答
0
为用户中的role_id保留一个单独的@Column,除了用@ManyToOne注解的用户之外,然后将 role_id设置为Users并保留用户。你不需要级联,所以删除它有没有casacade类型而不是ALL。在@ManyToOne中,您应该给insertable = false & updatable = false以避免重复的列问题。
1
您需要首先找到现有的Role对象,然后将其设置为User对象。
换句话说,在保存用户之前,角色对象需要已经被创建和管理。
1
我想
@Entity
public class Users{
@Id
private int id;
private String email;
@ManyToOne(cascade=CascadeType.ALL)
private Role role_id;
}
@Entity
public class Role{
@Id
private int id;
private String type;
}
使用JPA
创建第一
Role role1 = new Role(1,"Role1");
Role role2 = new Role(2,"Role2");
然后将角色添加到用户角色
User user1 = new User(1,"User1","mail",role1);
EntityManager em = ....
em.persist(user1);
正如我们已经级联选项role1上和USER1将被保存在数据库中,不要忘记使用事务做这个操作
如果你想从数据库
首先使用预先存在的角色考虑检索Role existingRole = em.find(Role.class, 1);
User user1 = new User(1,"User1","mail",existingRole);
EntityManager em = ....
em.persist(user1);
0
考虑到无论是在用户和角色的id
列是主键,你需要的是持续的新用户时,首先从数据库中它的类型检索所需的角色,然后只设置在用户实体的作用,坚持用户。
相关问题
- 1. 休眠多对一映射
- 2. 一对多映射休眠
- 3. 休眠多个多对一映射
- 4. 休眠一对多单向映射表
- 5. 休眠多对多映射
- 6. 休眠映射一对一
- 7. 休眠一对一映射
- 8. 休眠一对一映射
- 9. 休眠失败映射两个表
- 10. 映射两个表中的休眠
- 11. 休眠 - 一个休眠映射
- 12. 休眠一对多映射固定值
- 13. 一对多映射ConstraintViolationException在休眠
- 14. 休眠一对多映射错误
- 15. 休眠外键映射多对一
- 16. 休眠映射多对一条件
- 17. 休眠映射 - 多对一关系
- 18. 休眠映射:在休眠时删除一对多的双向映射
- 19. 休眠一对一映射表现为一对多
- 20. 休眠 - 多次映射一个类
- 21. 休眠映射xml多对多数组
- 22. 映射许多一对多没有休眠/ NHibernate的连接表
- 23. 休眠一一对一映射问题
- 24. 休眠。如何将两个多对多映射到同一个实体
- 25. 将多个表映射到一个列表休眠
- 26. 休眠多模式映射
- 27. 休眠映射
- 28. 休眠映射
- 29. 休眠映射
- 30. 休眠映射两个表到一个类
谢谢我错过了这一点,.., – BiswajitP