2011-01-30 10 views
0


この理論的なクエリは休止状態で可能ですか?Hibernate - Beanでフェッチする

物事は単純であるとき、私は豆(エンティティ)とないHQLで作業したい

SELECT * from person WHERE id=5 

を意味

Person personQuery = new Person();//(@Entity) 
personQuery.setId(5); 
List<Person> persons = personQuery.get("=").fetch(); 


これをサポートするAPIはありますか?

答えて

1

それが唯一のIDである場合は、あなたが使用することができます。

Person person = session.get(Person.class, 5); 

SpringのHibernateTempalteはあなたが必要なもののように思えるfindByExample方法があります。

それが実際に休止状態の基準のAPIを使用しています。

Criteria executableCriteria = session.createCriteria(exampleEntity.getClass()); 
executableCriteria.add(Example.create(exampleEntity)); 
return executableCriteria.list(); 
+0

"それが唯一のIDである場合には、" あなたはPKを意味ですか? – fatnjazzy

+0

はい。私は、フィールド "id"がPKを意味していなかった場合は一度もありません:) – Bozho

0

私はあなたの目標は、Javaではなどの発見、更新を行うためのsessionオブジェクトを必要としないことであると仮定し、私はそのようなものを見たことがありません。 GrailsはHibernateを使ってGORMとして実装されており、実行時にメソッドを動的に追加することによって動作します。

たとえば、あなたがidでまっすぐな検索を行うことができます。

def item = Item.get(itemId) // finds an item with a given id 

それとも簡単にはHQLクエリを実行します。

def items = Item.findAll("from Item as item where item.price < 50") // find all items where price < 50 
関連する問題