![](/img/trans.png)
[英]Persisting Map<Entity, Integer> with @ElementCollection (JPA)
[英]JPA: Persisting a Map<String,Entity>
當String不是所映射實體的鍵時,是否可以幫助保留Map? 例如:
class A {
@Id
long id;
String code;
}
class B {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
@What magical combination of JPA annotations should I use here?!
Map<String,A> mapAByCode;
}
我嘗試了{@ JoinTable,@ MapKeyColumn,@ JoinColumn,@ JoinTable}批注的許多組合,但均未成功,我要瘋了……
謝謝!
由於您似乎想使用A.code值映射實體,因此@MapKey是您所追求的。 @MapKey允許您定義引用內的值以用作地圖的鍵。 如javadoc所述,它必須是唯一的,否則您將遇到問題。
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
@MapKey(name="code")
Map<String,A> mapAByCode;
看來問題與我在同一課程中使用的其他地圖有關:
@Entity
class A {
@Id
long id;
String code;
}
@Entity
class B {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
@JoinTable(name = "B_MAPABYID", joinColumns = @JoinColumn(name = "B_ID"))
@MapKey(name="id")
Map<Long,A> mapAById;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER)
@JoinTable(name = "B_MAPABYCODE", joinColumns = @JoinColumn(name = "B_ID"))
@MapKey(name="code")
Map<String,A> mapAByCode;
}
此配置不適用於我,但是如果我將mapAById設置為瞬態,則一切正常。 這對您有意義嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.