将ElementCollection转换为一对多关系

时间:2015-10-09 18:20:25

标签: java hibernate jpa

我有这样的情况:

public class Program{
@Id
private String programid;

@ElementCollection
List<String> productId;

}

这会创建一个像这样的表结构

程序

programId - PK

Program_ProductId

programId |的productId

我想实现相同的目标,但使用实体关系。 一对多似乎是正确的方法,但表结构不能改变。 这是正确的选择吗?

或者我应该考虑Inhertence来映射这种情况?

1 个答案:

答案 0 :(得分:1)

将其转换为@OneToMany关系不应该是一个问题。

@Entity
public class Program{
    @Id
    private String programId;

    @OneToMany(mappedBy="program", cascade=CascadeType.ALL)
    List<Product> products;
}

@Entity
public class Product {

    @Id
    private String productId;

    @ManyToOne
    @JoinColumn(name="programId")
    private Program program;
}
Product prod = new Product();
Program prog = new Program();
prog.getProducts().add(prod);
prod.setProgram(prog);
em.persist(prog);