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
我有一个实体 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