我正在尝试保留以Map作为其值之一的Entity。更准确地说。我有@Entity Request,它具有包含三个元素的复合主键。该主键由一个ID组成,用户由Map<EntityType, List<EntityType>>
组成,其中第一个EntityType是所选服务,而相关值是将要应用该服务的项目列表。
在我拥有的代码下面,但是我缺少用于地图的注释。我在网上阅读,最好的方法是创建一个包装实体,就像我创建的包装实体(SelectedService2MyItem)一样,该包装实体保存列表,然后映射只是两个实体之间的键值对,但我无法使其工作而且我不知道该如何进行。
有人可以帮助我吗?
请求实体
@Entity
public class Request {
@EmbeddedId
private RequestId id;
@Column
private String name;
@ManyToOne
@JoinColumn(name = "user_id", foreignKey = @ForeignKey(name = "FK_user_id"), nullable=false)
private User user;
//Getter, setter, constructor omitted
}
RequestId
@Embeddable
public class RequestId {
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
@JoinColumn(name = "user_id", foreignKey = @ForeignKey(name = "FK_user_id"), nullable=false)
private User user;
private Map<ServiceOffered, SelectedService2MyItem> service2MyItem = new HashMap<ServiceOffered, SelectedService2MyItem>();
//Getter, setter, constructor omitted
}
SelectedService2MyItem
@Entity
public class SelectedService2MyItem {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@OneToMany(mappedBy = "id")
private List<MyItem> myItemsSelected;
//Getter, setter, constructor omitted
}