Table 通过 JPA 创建

Table creation via JPA

我有一个实体 class 作为 ClassA 其中包含

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

此语句将在 table classa 中输入值,并且还会在 classb 中输入对应于 ClassA.

的值

它会创建任何 table 类似 classa_possible_values 并输入值吗?

此注释不会生成任何表,这些表仅定义表之间的关系。如果您添加 @JoinColumn 注释,那么您的 JPA 提供程序将生成一个外键

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

比如可以将ClassB中的一个外键table设置为ClassA。实体 ClassA 中的 ClassB 列表在 ClassA table 中没有任何列,但该列表作为外键保留在 ClassB 中。要实现这个,需要在'OneToMany'注解中添加一个mappedBy值,在ClassB中添加一个'ManyToOne'注解:

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

B班:

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

还有其他选项,例如为关系创建 joinTable,但我认为这是更简单的解决方案。

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