如何使用HibernateTemplate.find()和运算符

时间:2016-02-02 13:41:22

标签: java spring hibernate

我是HibernateSpring的新手。我想从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.我在这里犯了什么错误。

1 个答案:

答案 0 :(得分:-1)

通常,如果您获得一个空列表,则表示您不使用交易。 HibernateTemplate本身不会创建交易。您不仅需要事务来写入数据,还需要读取数据。

您需要向getMetaDataID()方法添加事务。你可以使用@Transactional注释来完成它,但是你需要从spring语境中获取你的类。

您也可以使用session.beginTransaction()打开交易,但您需要正确控制它。