2011-01-30 78 views
0


這是理論上的查詢可能在休眠嗎?休眠 - 豆取指

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

意味着

SELECT * from person WHERE id=5 

當事情很簡單我想用豆(實體)的工作,而不是HQL。
是否有API支持?

回答

1

如果只是通過ID,那麼你可以使用:

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

Spring的HibernateTempaltefindByExample方法,這似乎是你所需要的。

它實際上使用Hibernate API標準:

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

「如果只是通過ID」,你的意思是PK? – fatnjazzy 2011-01-30 20:37:29

0

我假設你的目標是不是需要session對象做認定,更新等在Java中,我還沒有見過這樣的事情。它已經在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