【问题标题】:Named Native Query, execute update statement命名 Native Query,执行更新语句
【发布时间】:2013-08-05 13:38:50
【问题描述】:

我们可以使用@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 执行更新语句,否则这是不可能的?

【问题讨论】:

  • 你看这个是为了[用 Hibernate NamedNativeQueries 返回一个值](stackoverflow.com/questions/13278544/…)
  • @vinit-prajapati 另外请更正您的更新查询。应该是UPDATE table_name SET properties WHERE clause

标签: sql hibernate postgresql


【解决方案1】:

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

【讨论】:

  • 你能提供更多细节吗?
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2023-04-08
  • 2010-11-12
  • 2020-07-23
  • 1970-01-01
相关资源
最近更新 更多