【发布时间】:2019-06-05 05:23:15
【问题描述】:
我有一个引用枚举类型列表的实体。该列表存储在数据库中如下:
userName role
-----------------------
user0001 role1
user0001 role2
user0001 role3
user0002 role1
对应的java类大致是这样的:
@Entity
@Table(name = "UserTable")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "userId")
private Integer id;
@Column(name = "user_name")
private String userName;
@ElementCollection(targetClass = Role.class)
@CollectionTable(name = "User_Roles")
@Column(name = "role")
@Enumerated(EnumType.STRING)
private List<Role> roles;
}
我检查了this 和this 的映射问题。然而我有两个问题。第一个问题是userName 不是我UserTable 中的PK,据我所知,hibernate 确实加入了PK。
第二个问题是当前设置的这个错误:
org.hibernate.LazyInitializationException: 延迟初始化失败 角色集合: com.project.Common.User.roles,无法初始化 代理 - 没有会话
这个错误应该通过EAGER加载来修复,但是当我尝试那个时,我在启动时遇到了以下错误:
java.lang.IllegalStateException: 尝试注册多个 SQL 针对查询空间的表别名 [roles1_、roles2_ 等] uid [<1>1>
标签: java hibernate jpa enums mapping