我正在嘗試在休眠中使用元素集合,如下所示:
@Entity
class A{
private int id;
//more fields
@ElementCollection(targetClass = MyEnum.class)
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinTable(
name = "A_B",
joinColumns = @JoinColumn(name = "B_id"),
inverseJoinColumns = @JoinColumn(name = "A_id"))
@MapKeyColumn(name = "B_id")
@MapKeyClass(B.class)
@Enumerated(EnumType.STRING)
private Map<B, MyEnum> value = new HashMap<>();
//getters and setters
}
其中 A 和 B 是 MySQL 中的兩個物體,MyEnum 是一個列舉。
但我收到以下例外 - 由以下原因引起:org.hibernate.AnnotationException:針對未映射的類使用 @OneToMany 或 @ManyToMany:A.values [MyEnum.class]。
當我們嘗試使用尚未使用 @Entity 注釋宣告為物體的類映射時會出現上述例外,但如果我們使用列舉,則需要將 @ElementCollection 注釋與 @Enumerated 列舉一起使用。我做了同樣的事情,但錯誤仍然存??在。
如果我在這里做錯了什么,你能幫我告訴我嗎?謝謝你。
uj5u.com熱心網友回復:
只需洗掉@OneToMany注釋:@ElementCollection就足夠了:
@ElementCollection(targetClass = MyEnum.class)
@Enumerated(EnumType.STRING)
private Map<B, MyEnum> value = new HashMap<>();
如果要指定用于存盤集合的表的表名和列名:
@ElementCollection(targetClass = MyEnum.class)
@MapKeyJoinColumn(name = "B_id")
@MapKeyClass(B.class)
@CollectionTable(
name = "A_B",
joinColumns = @JoinColumn(name = "A_id"))
@Enumerated(EnumType.STRING)
private Map<B, MyEnum> value = new HashMap<>();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534293.html
標籤:爪哇数据库冬眠jpa
