2

次のような 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;
    }
}

たとえば、「someMap」の値として「test」を持つような「A」を持つすべての「Â」を取得するために、クエリを (基準を使用して) 実行するにはどうすればよいですか? または、クリアSQLでのみ行うことができますか?

4

1 に答える 1

1

Interesting. I've never done a map where key is the object, and string the value. Generally it's the other way around. Can you keep the string on C, and use a straight collection? Or is there a funky many to many relationship going on here?

于 2012-10-30T20:24:05.817 に答える