2017-12-08 6 views
0

私は、休止状態のようなormマッパーで照会することに関して質問があります。私は休止エンジンがクエリをカスケード接続することによって、一度にすべてのクラスのインスタンスを追加することができ、オブジェクトを保存したい場合は、このjpaデータモデルから特定のオブジェクトを照会

class A { 
    int i; 
    B b; 
} 

class B { 
    int j; 
} 

のようなデータベースモデルを持っていると仮定します。

しかしクラスAのすべてのエントリに値Bj = 10のオブジェクトを保持したい場合はどうすればいいですか?

SELECT * FROM A a, B b WHERE a.ref = b.ref AND b.j = 10; 

しかし、ORMと

refは、オブジェクト参照を使用してモデル化されています

はSQLで私はこのような何かを持っているでしょう。このようなクエリをどのように作成するのですか?まず第一に、クエリを書く必要がありますか?そして第二に:これらの参照a.ref = b.ref

+0

任意のJPQLリファレンスはなぜあなたは想定しませんあなた – DN1

答えて

0

あなたはJPQL内の参照の上に移動することができます:

SELECT a FROM A a WHERE a.b.j = 10; 
0

を解決休止状態になりますどのように使用することができるはずです。

A findByBJ(int j); 

あなたのテーブルが適切にいくつかのOneToOneの関係で保存されている場合。

+1

を言うだろう彼は春のデータを使用していますか? –

0

定義する1つのEntityManager:次に

EntityManager em; 

CriteriaBuilder builder = em.getCriteriaBuilder(); 
    CriteriaQuery<A> query = builder.createQuery(A.class); 
    Root<A> from = query.from(A.class); 
    from.fetch("b"); 
    Predicate predicate = builder.and(predicate, builder.equal(from.get("b").get("j"), 10); 
    TypedQuery<A> typedQuery = em.createQuery(query.select(from).where(predicate)); 
    List<A> results = typedQuery.getResultList(); 
関連する問題