JPA @ElementCollection列表指定连接列名称

2022-09-01 16:51:54

我有以下实体:

@Entity
public class Shirt implements Serializable {

    @Id
    @Size(max=9)
    private String id;

    @ElementCollection
    @CollectionTable(name="SHIRT_COLORS")
    @Column(name="color")
    private List<String> colors = new ArrayList<String>();
    ...

当我将休眠设置为自动创建时创建的集合表是

SHIRT_COLORS
 shirt_id
 color

如何对实体进行批注,以便联接列不是实体和 pk 的串联,以便创建的表是:

SHIRT_COLORS
 id
 color

我尝试过@JoinColumn但那不起作用。实际上,生产中的SHIRT_COLORS表是在应用外部管理的,并且列名已经定义。


答案 1

试试这个:

@Entity
public class Shirt implements Serializable {

    @Id
    @Size(max=9)
    private String id;

    @ElementCollection
    @CollectionTable(
        name = "SHIRT_COLORS",
        joinColumns=@JoinColumn(name = "id", referencedColumnName = "id")
    )
    @Column(name="color")
    private List<String> colors = new ArrayList<String>();
    ...

答案 2

推荐