我必须使用JPA保留Map <entitytype,list <entitytype =“” >>

时间:2019-02-23 16:46:22

标签: java spring hibernate jpa hibernate-annotations

我正在尝试保留以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
}

0 个答案:

没有答案