命名为Native Query,执行update语句

时间:2013-08-05 13:38:51

标签: sql hibernate postgresql

我们可以使用@NamedNativeQuery创建更新语句,

@Entity
@Table(schema = "public", name = "conversion_checker")
@NamedNativeQueries({
    @NamedNativeQuery(name="updateExpireStatus", query="UPDATE conversion_checker SET status='Expired' FROM conversion_checker ")
})
public class ConversionChecker extends BaseEntity {...}

这里我正在执行本机查询

/**
 * {@inheritDoc}}
 */
@Override
public int executeNativeUpdate(String namedNativeQuery, Map<String, Object> params) {
    Query query = getSession().getNamedQuery(namedNativeQuery);
    if(params!=null && params.size()>0){
        for(Map.Entry<String, Object> param: params.entrySet()){
            query.setParameter(param.getKey(), param.getValue());
        }
    }
    return query.executeUpdate();
}

它抛出,

Caused by: org.hibernate.cfg.NotYetImplementedException: Pure native scalar queries are not yet supported,

如何使用@NamedNativeQuery执行更新语句,或者这是不可能的?

1 个答案:

答案 0 :(得分:2)

尝试添加@NamedNativeQuery( resultClass = ConversionChecker.class )