2011-02-27 17 views
0

私はHibernateを初めて使う人です。これは私の問題です。私はこれを行うことができます:Hibernateでの外部キーの動作は?

package = session.createQuery("from Package").list(); 
session.getTransaction().commit(); 

をしかし、私が本当に欲しいのはSQLでこれです:

select * from package,product where product.nome='television' and package.idProduct = product.id 

私はそれをどのように行うのですか?

これらは私のPOJOです:

public class Package implements java.io.Serializable { 

    private PackageId id; 
    private User user; 
    private Product product; 
    private int quant; 
    private char mode; 
    private String unit; 
    private String description; 

public class PackageId implements java.io.Serializable { 

    private int id; 
    private int idProduct; 

public class Product implements java.io.Serializable { 

    private int id; 
    private String name; 
    private Set packages = new HashSet(0); 

これらのPOJOは、Netbeansのによって生成されました。

この設定は正しいですか?

http://pastebin.com/gBUdKke0

+1

設定がないようです。 Hibernateを使うと、クラス内で注釈を付けることができます(OneToManyはパッケージのために気をつけます)。あるいは、daoごとにhbm.xmlファイルを作成することができます。または、JPA APIを使用して、ハイバネート・インプリメンテーションを使用して、名前付きクエリーでJPAを使用しています。 – extraneon

+0

Hibernateで特定のSQLクエリを実行する方法を知りたいと思っていますか?あなたは設定を投稿していません。 –

+0

ありがとうございます。それはhttp://pastebin.com/gBUdKke0 –

答えて

0

あなたはすでにHQLで作業しています。 HQLを使用すると、1つのオブジェクトだけでなく、複数のオブジェクトフィールドを選択することもできます。

select product, package 
from Product product 
join product.packages package 
where product.name = 'television' 

例については、selectのHQLリファレンスを参照してください。

+0

ありがとうございました。私の場合、この場合は最後にこのようにしてくれてありがとうございます。 パッケージからパッケージを選択してください。パッケージパッケージpackage.product where product.name = 'television'とproduct.id = package.produto.id –

関連する問題