我有一个看起来像这样的 Hibernate 映射:
class A {
private Long id;
private Map<C,String> someMap;
...
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@ElementCollection(targetClass=String.class, fetch=FetchType.EAGER)
public Map<C, String> getSomeMap() {
return someMap;
}
pubic void setSomeMap(Map<C,String> someMap){
this.someMap = someMap;
}
}
class B {
private Long id;
private A a;
...
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@OneToOne
public A getA(){
return a;
}
public void setA(A a){
this.a = a;
}
}
class C {
private Long id;
...
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
我如何进行查询(使用条件)以获取所有具有此类“A”的“В”,例如,“test”作为“someMap”中的值?或者我只能用清晰的 sql 来做吗?
最佳答案
很有趣。我从来没有做过一个 map ,其中键是对象,并将值串起来。一般情况是相反的。你能把字符串保留在 C 上,并使用直接集合吗?还是这里发生了一种奇怪的多对多关系?
关于java - 基本类型 map 的 Hibernate 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13127184/