Hibernate 修改复合主键中的字段
由于设计的时候没有考虑到可能变化其中的内容,于是设成复合主键,
现在需要对其中某字段进行修改,但是用Hibernate的方法始终更新不了,囧,最后就直接用SQL写了。
Hibernate使用SQL的写法是:session.createSQLQuery(sql).executeUpdate()
在使用中一直报错:java.lang.UnsupportedOperationException: Update queries only supported through HQL
囧了,你不能用SQL你干嘛还叫SQLQuery……
之后百度到……Hibernate3.2以上的版本中才支持,
仔细一看工程的jar包是3.1的,于是丢了换了个3.2的再跑,运行成功~
Spring+Hibernate查询复合主键报错
原本在C/S项目中的测试通过,但是在转换到B/S的时候就报错了,
复合主键的查询代码是
-
/**
-
* 获得指定编号的种别
-
* @param sortID
-
* @param category
-
* @return
-
*/
-
InstrumentSort sort = new InstrumentSort();
-
sort.setSortId(sortID);
-
sort.setInstrumentCategory(category);
-
return (InstrumentSort) this.getHibernateTemplate().getSessionFactory().getCurrentSession().load(InstrumentSort.class, sort);
-
}
其中sortID和category是InstrumentSort的主键。
报的错误是org.hibernate.LazyInitializationException: could not initialize proxy - no Session
于是在InstrumentSort.hbm.xml的<hibernate-mapping>里加上了 default-lazy="false" 属性 就成功了 囧rz 原因为啥不知