12

このエンティティがある場合:

@Entity
public class A {

    @ManyToOne
    @JoinColumn(name = "bField", nullable = true)
    private B myBObject;

}

そして、私はそれを行う基準のジェネリックジェネレーターを持っています:

Root<A> root = criteria.from(A.class);
root.get("myBObject").get("aFieldInB");

問題は次のとおりです。生成されたSQLにはAとBの間にCROSS JOINが含まれますが、生成されたSQLにはAとBの間にLEFT JOINが含まれるようにしたいと思います。

どうやってやるの?

4

1 に答える 1

2

join() を使用する必要があります。一般に、リレーションシップには常に join() を使用することをお勧めします。

http://en.wikibooks.org/wiki/Java_Persistence/Criteria#JoinTypeを参照してください 。

于 2013-04-10T13:36:57.907 に答える