JPA 元素集合映射<Integer, Entity>
JPA ElementCollection Map<Integer, Entity>
我需要将地图的值分配给我的实体,但 jpa 试图将孔对象保存为字节数组。
@Entity
public class ImageSet {
...
@ElementCollection
private Map<Integer, Image> images = new LinkedHashMap<>();
}
@Entity
public class Image {
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
我认为这并不难,但我无法在网上找到任何示例。请你帮助我好吗?非常感谢!
用 @ElementCollection
注释的关联对以下映射类型有效:
Map<Basic,Basic>
Map<Basic,Embeddable>
Map<Embeddable,Basic>
Map<Embeddable,Embeddable>
Map<Entity,Basic>
Map<Entity,Embeddable>
用 @OneToMany
/ @ManyToMany
注释的关联对以下映射类型有效:
Map<Basic,Entity>
(这是你的情况)
Map<Embeddable,Entity>
Map<Entity,Entity>
根据上述规则,实体可能如下所示:
@Entity
public class ImageSet {
...
@OneToMany(mappedBy="container")
@MapKey //map key is the primary key
private Map<Integer, Image> images = new LinkedHashMap<>();
}
@Entity
public class Image {
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private ImageSet container;
}
请注意,ImageSet.images
和 Image.container
之间的双向关联是可选的,但删除它会在数据库中创建一个额外的 table。
我需要将地图的值分配给我的实体,但 jpa 试图将孔对象保存为字节数组。
@Entity
public class ImageSet {
...
@ElementCollection
private Map<Integer, Image> images = new LinkedHashMap<>();
}
@Entity
public class Image {
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
我认为这并不难,但我无法在网上找到任何示例。请你帮助我好吗?非常感谢!
用 @ElementCollection
注释的关联对以下映射类型有效:
Map<Basic,Basic>
Map<Basic,Embeddable>
Map<Embeddable,Basic>
Map<Embeddable,Embeddable>
Map<Entity,Basic>
Map<Entity,Embeddable>
用 @OneToMany
/ @ManyToMany
注释的关联对以下映射类型有效:
Map<Basic,Entity>
(这是你的情况)Map<Embeddable,Entity>
Map<Entity,Entity>
根据上述规则,实体可能如下所示:
@Entity
public class ImageSet {
...
@OneToMany(mappedBy="container")
@MapKey //map key is the primary key
private Map<Integer, Image> images = new LinkedHashMap<>();
}
@Entity
public class Image {
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private ImageSet container;
}
请注意,ImageSet.images
和 Image.container
之间的双向关联是可选的,但删除它会在数据库中创建一个额外的 table。