通过JPA创建表

时间:2015-01-27 10:18:22

标签: java java-ee jpa

我有一个实体类ClassA,其中包含

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
List<ClassB> possibleValues; 

此语句将在表格classa中输入值,并在其中输入classb中与ClassA相对应的值。

是否会创建任何类似classa_possible_values的表并输入值?

2 个答案:

答案 0 :(得分:0)

这个注释不会生成表,这些只是定义表之间的关系。如果添加@JoinColumn注释,则JPA提供程序将生成外键

答案 1 :(得分:0)

您可以使用注释设置哪个实体是关系的所有者,并设置数据在数据库中的存储方式。

例如,您可以将ClassB表中的外键设置为ClassA。实体ClassA中的ClassB列表在ClassA表中没有任何列,但该列表在ClassB中作为外键保留。要实现这一点,您需要在&#39; OneToMany&#39;中添加mappedBy值。注释并添加“ManyToOne”#39; ClassB中的注释:

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy=classA)
List<ClassB> possibleValues;

在classB中:

@Entity
public ClassB {
    ...
    @ManyToOne
    ClassA classA;
    ...
}

还有其他选项,比如为关系创建一个joinTable,但在我看来,这是更简单的解决方案。

如果要基于JPA注释生成数据库模式,则需要在配置中添加一些属性,例如,这是如何为JPA / Hibernate添加此配置:Hibernate schema generation properties