我有这样的情况:
public class Program{
@Id
private String programid;
@ElementCollection
List<String> productId;
}
这会创建一个像这样的表结构
programId - PK
programId |的productId
我想实现相同的目标,但使用实体关系。 一对多似乎是正确的方法,但表结构不能改变。 这是正确的选择吗?
或者我应该考虑Inhertence来映射这种情况?
答案 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);