我是Hibernate
和Spring
的新手。我想从HibernateTemplate.find()
的HQL查询中检索数据。此查询有and
运算符。
当我使用HibernateTemplate.find()引用List
时,列表大小为0.以下是我的代码。
public long getMetaDataID(String customerID,String objectID){
long metadataID=0;
long customerID_l=Long.parseLong(customerID);
long objectID_l=Long.parseLong(objectID);
List<RWFieldMetadata> list =template.find("from RWFieldMetadata p where p.customer_id = ? and p.object_id=?", customerID_l,objectID_l);
for(RWFieldMetadata obj: list){
metadataID=obj.getId();
}
return metadataID;
}
我知道还有criteria
。但我觉得很难,并希望继续使用HibernateTemplate.find()
。为什么我的列表大小为0.我在这里犯了什么错误。
答案 0 :(得分:-1)
通常,如果您获得一个空列表,则表示您不使用交易。 HibernateTemplate
本身不会创建交易。您不仅需要事务来写入数据,还需要读取数据。
您需要向getMetaDataID()
方法添加事务。你可以使用@Transactional
注释来完成它,但是你需要从spring语境中获取你的类。
您也可以使用session.beginTransaction()
打开交易,但您需要正确控制它。