JPA:在单个字段中存储整数列表
2022-09-02 01:37:44
是否可以使用标准 JPA 2 将整数列表存储在相应实体表的单个字段中?
@Entity
@Table(name="tbl_myentities")
public class MyEntity {
@ElementaryCollection
@Column(name="vals") // in table tbl_myentities
private List<Integer> vals;
是否可以使用标准 JPA 2 将整数列表存储在相应实体表的单个字段中?
@Entity
@Table(name="tbl_myentities")
public class MyEntity {
@ElementaryCollection
@Column(name="vals") // in table tbl_myentities
private List<Integer> vals;
无法在单个字段中存储多个值。将它们存储在单个字段中的原因是什么?
一种方法是使用 String 类型的字段,并将所有整数添加到逗号分隔列表中,并在 getter 和 setter 中连接/分解:
private String vals;
public setVals(int vals[])
{
// this.vals = Iterate vals[] and create a comma separated string
}
public int[] getVals()
{
// vals.split(",") to get a list of Strings, then typecast/parse them to ints before returning
}
使用批注和控制映射需要一个单独的表来存储值。@ElementCollection
@CollectionTable
@ElementCollection
private Collection<Integer> integers;
在 http://en.wikibooks.org/wiki/Java_Persistence/ElementCollection 上阅读有关元素集合的更多信息
您可以创建转换器并将其与注释一起使用@Converter。
此转换器必须实现 AttributeConverter,这是一个通用接口,具有两个方法 convertToDatabaseColumn 和 convertToEntityAttribute。
它很容易使用,你可以在这里检查:jpa独立自定义类型映射/ javax.persistence.x替代org.hibernate.annotations.Type和org.hibernate.annotations.TypeDef