java - 複数 - manytoone joincolumn




無関係なエンティティをjpa api基準で結合する (2)

2つのデータベーステーブルには外部キーの関係があります。

それらはJPAによって2つのエンティティABにマッピングされますが、結合列はエンティティから手動で削除されるため、JPAの世界ではクラスABは関連しておらず、フィールド/プロパティを通して相互にナビゲートできません。

条件APIを使用すると、2つのテーブルを結合するクエリを作成することができますか?

私がインターネットで見つけたすべての例はゴールを達成するためにjoinカラムを使用します、しかし、上で述べたように、それはコードから取り除かれました。 。


まず、外部キーの関係はナビゲートだけではありません。 それらは主に、関係に偽の値が導入されないようにするのに役立ちます。 それらはまた、クエリ最適化のためにデータベースを助けるかもしれません。 私はあなたにそれを再考するように勧めます。

とにかく、いくつかの無関係なエンティティを使用するクエリを作成するには、それらをfromroot )エンティティとして配置する必要があります(SQLまたはJPQLで行うように)

SELECT .... FROM Link l, Training t WHERE l.attribute = t.attribute;

Root<Link> rootLink = criteriaQuery.from(Link.class);
Root<Training> rootTraining = criteriaQuery.from(Training.class);
...
criteriaQuery.where(
    criteriaBuilder.equal(rootLink.get(link_.linkAttribute), trainingLink));





jpa