java - Hibernate 使用枚举连接列

标签 java hibernate join enums

我有以下设置

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/

相关文章:

java - hql 中的 processEqualityExpression() : No expression to process!

MySQL 查询 - 连接一张表中不同数量的行

grails - GORM急于按条件获取收藏

java - 在 catch 或初始化中将空值处理为默认值

java - 明确初始化的字段抛出 NullPointerException

java - 如何将手动 SQL 行映射与 CrudRepository (Spring Data) 混合

java - Hibernate EJB 架构 - 模型 ClassNotFoundException

mysql - 从 3 个选择查询中获取一行结果数据

java - Java 程序星期几

java - 从 double 到 int 的可能有损转换