我有一个休眠映射,看起来像这样:

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来做?

最佳答案

有趣。我从来没有做过一个映射,其中键是对象,并将值字符串化。通常情况是相反的。您可以将字符串保留在C上并使用直接集合吗?还是这里有一种时髦的多对多关系?

09-10 06:36
查看更多