我有三个类似于这样的元素:
public class ItemType {
@Id
private Long id = null;
...
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true, mappedBy = "itemTypeVO")
@MapKey(name = "company.id")
private Map<Long, ItemTypePurpose> purposeHash = null;
...
}
public class ItemTypePurpose {
@Id
private Long id = null;
...
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "idcompany")
private Company company = null;
...
}
public class Company {
@Id
private Long id = null;
...
}
我的问题是,我想把公司的ID作为ItemType中我的映射表的键。
我可以编译和部署应用程序而不出现任何错误。可以将ItemType持久化,一切都很顺利地存储到数据库中。但是当我重新获取它时,映射表的键是“错误的”,我不知道使用了什么信息,但肯定不是公司ID。也许是ItemTypePurpose的ID。
公司被正确加载到Map中,只是映射表的键是错误的。我已经尝试过搜索,但找不到任何相关信息。是否有任何方法可以让JPA使用这个“嵌套属性”创建我的映射表?
*对于我的英语表示抱歉,如果您理解了我的需求并且能够更好地用英语撰写,请随意编辑我的问题。