我有以下设置
table: table1
| id | name |
| 1 | test |
table: table2
| id | table1_id | value |
| 1 | 1 | ENUM1 |
| 2 | 1 | ENUM2 |
然后,我有以下 Java 代码:
@Entity
public class Table1 {
@Id
@GeneratedValue
private Long id;
@NotEmpty
@Column(unique = true)
private String name;
@OneToMany
@JoinTable(
name = "TABLE2",
joinColumns = @JoinColumn(name = "table1_id")
)
@Enumerated(EnumType.STRING)
private Set<TheEnum> enumValues;
}
但是,当我尝试运行 Spring boot 应用程序时,出现以下错误:
由以下原因引起:org.hibernate.AnnotationException:使用 @OneToMany 或 @ManyToMany 定位未映射的类:${package}.Table1.enumValues
你知道我要做什么吗?
最佳答案
@Enumerated
表示 TheEnum
对象在数据库中存储为 int 还是 string。
您想要将集合enumValues
映射到连接表TABLE2
。使用此代码:
@ElementCollection(targetClass = TheEnum.class)
@JoinTable(name = "TABLE2", joinColumns = @JoinColumn(name = "table1_id"))
@Column(name = "enumValues", nullable = false)
@Enumerated(EnumType.STRING)
Set<TheEnum> enumValues;
关于java - Hibernate 使用枚举连接列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093232/