2012-03-06 15 views
1

私はクラスがハイバーネイトでマップされているとしましょう。プロパティの束、IDと無関係の多対一、そしてその名前はMyClassです。私は何をしようとしていることは、データベースからすべてのレコードを取得しているので、私はそのようなことを実行します。基準は私のリストにある13個のオブジェクトを返し、データベース内の1つのレコードでなぜcreateCriteriaが非常に多くのオブジェクトを返すのですか?

//omitted some code 
Session session = sessionFactory.openSession(); 
List<MyClass> = session.createCriteria(MyClass.class).list(); 

を。私は理由を理解することができませんが、このクエリ中に:

//omitted some code 
Session session = sessionFactory.openSession(); 
List<MyClass> = session.createQuery("from MyClass").list(); 

正常に動作し、1オブジェクトだけを返します。誰かが私にこれを説明できますか?

+0

場合? –

+0

MyClassにはいくつかのコレクションプロパティがありますか(1対多の関係)ですか? –

+0

以下は、1つの項目を返しますか?session.createCriteria(MyClass.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list()? –

答えて

0

@Kenいや、しかし、非常に深いそのコメントに感謝@Amir を隠され、それが

間違っていたものを見つけるために私を助けまあそれはとの関係、Hibernateマッピングファイルで、私は小さなものを持っていることを、見つけ出しこれにはハイバネートマッピングファイルで定義されたリストがあり、このリストの中には1対多の関係が定義されており、これはすべての問題を引き起こしていました。開始溶液から

ではなくのcreateCriteriaのからCreateQueryを使用することでしたが、私は休止状態について何かを知っていない場合、私は興味があったが、それは昔のプログラマの間違いだったそれぞれに休止状態によって生成されたSQLクエリは何

関連する問題