我有一个实体类ClassA
,其中包含
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
List<ClassB> possibleValues;
此语句将在表格classa
中输入值,并在其中输入classb
中与ClassA
相对应的值。
是否会创建任何类似classa_possible_values
的表并输入值?
答案 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