Java 基本类型映射的休眠条件
我有一个Hibernate映射,看起来像这样:Java 基本类型映射的休眠条件,java,hibernate,collections,mapping,Java,Hibernate,Collections,Mapping,我有一个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) {
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类{
私人长id;
私人地图;
...
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
@ElementCollection(targetClass=String.class,fetch=FetchType.EAGER)
公共映射getSomeMap(){
返回someMap;
}
公共空间集合地图(地图集合地图){
this.someMap=someMap;
}
}
B类{
私人长id;
私人A;
...
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
@奥内托内
公共A getA(){
返回a;
}
公共无效setA(A){
这个a=a;
}
}
C类{
私人长id;
...
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
}
如何进行查询(使用条件)以获取所有具有“a”的“b”,例如,“test”作为“someMap”中的值?或者我只能用clear sql来完成吗?很有趣。我从来没有做过一个映射,其中key是对象,string是值。一般来说,情况正好相反。你能把字符串保持在C上,并使用一个直接的集合吗?或者这里是否存在一种奇怪的多对多关系?您应该发布有关映射的详细信息。发布您的hbm.xml文件或用于映射的注释。更新有关映射的信息。使用映射是常规情况,我经常使用这种方式。在我的例子中,将字符串保留在C中是不可接受的。现在我对查询有一些问题,因为字符串不是实体,所以我可以把它作为限制条件放在条件中。我找到了一种解决问题的方法——在实体类中包装字符串,然后编写漂亮的条件,但我想不包装就解决它。我怎么做?