2017-06-22 13 views
0

JPA createQuery()を使用すると、クラス名とエンティティ名の両方を使用してDBデータを取得できることがわかりました。JPA createQuery()

これは、クラス名

em.createQuery( "com.model.Stuff Sから"、 Stuff.class).getResultList()によるものです。

これはem.createQuery( "ものからS"、 Stuff.class).getResultList()

エンティティ名からです。

これはorm.xml

<entity class="com.model.Stuff" name="Stuff"> 

にJPAはorm.xmlからか、私はクラスに入れて注釈から、私が使用しています特定のクラスを取得することができるもの、私が使用して、どんなにです。

  1. なぜ私はStuff.classをパラメータに入れなければならないのですか?

  2. createQuery()には最大で2つのパラメータしか設定できないため、いくつかの結合を行うには2つのクラスを選択する必要がありますか?

    私はこの

    em.createQuery( "スタッフSから、シングT s.id = t.stuff_id"、Stuff.class、Thing.class).getResultList()を行うことはできません。

  3. はem.createQuery( "スタッフからS"、 Stuff.class).getResultList()

    です。

    等しい

    em.createQuery)(.getResultList( Stuff.class "スタッフsからの選択")。

私にいくつかの助けを与えるためにありがとうございました。

答えて

1
  1. Stuff.classは、どのタイプのクエリ結果オブジェクトを決定するためのパラメータに入ります。クエリーは、数十のネストされた型で無限に複雑になることがありますが、最後には1つのタイプのオブジェクトを返す必要があります。

  2. 次に、結合の結果となる3番目のJavaタイプを作成する必要があります。それについて考えてみてください。結果は結合後どのような形になるべきですか?

  3. 私の知る限りでは、そう