5

以下のクエリを実行すると、製品のリストが表示されます。

List<Product>=

getCurrentSession().createQuery("SELECT p FROM Product p ").list();

以下のように結合がある場合、それは何を返しますか。

getCurrentSession().createQuery("SELECT p FROM Product p inner join ProductCategory pc where p.id=pc.id").list();
4

5 に答える 5

5

List<Object[]>結果として返ってくるはずです。このスレ見てください

そして、次のようなエンティティにアクセスする必要があります

for (Object[]> result : query.list()) {
    Product p = (Product) result[0];
    ProductCategory pc = (ProductCategory) result[1];
}
于 2013-05-02T05:13:55.770 に答える
4

SELECT p FROM Product p inner join ...そのようなものは、Productsのリストを提供します。

FROM Product p inner join ...そのようなものは、配列のリストを提供します。

于 2013-05-02T05:06:12.670 に答える
1

これはオブジェクトの a を返しlistます。それらをにキャストする必要がありますProduct

List list = session.createQuery("SELECT p FROM Product p inner 
                      join ProductCategory pc where p.id=pc.id").list();
于 2013-05-02T05:04:52.113 に答える
0

javax.persistence.Query のドキュメントによると、List が返されます。なぜ違うと思うのでしょうか?

于 2013-05-02T05:06:45.350 に答える
0

この java.lang.object からモデル クラスへのクラス キャストは、まったく機能しません。以下は私のコードです。

List<Contactinfo> listStudentInfo = new ArrayList<Contactinfo>();                    
                         //listStudentInfo = dataService.getAllStudent(studentInfo);
                         listStudentInfo = dataService.getStudentInfo();
                         System.out.println(listStudentInfo.size()); 
                         Contactinfo contactinfo = (Contactinfo)listStudentInfo.get(0);

ただし、休止状態では、@Many-to-one または @One-to-one 結合アノテーションによって関連付けられた両方のエンティティがある場合、結合する必要はありません。次に、1 つのオブジェクトのみを選択する必要があります。結合を介して他のオブジェクトに自動的にアクセスできます。結合フィールドの getter()、setter() メソッドを保持していることを確認してください。これが状況を明確にすることを願っています。

于 2016-06-24T09:53:24.127 に答える