首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

用hql语言查询单表,控制台竟然打印hibernate-update语句

2012-12-24 
用hql语言查询单表,控制台居然打印hibernate-update语句问题描述:1、项目为java-web项目,hql查询代码写在业

用hql语言查询单表,控制台居然打印hibernate-update语句

问题描述:

1、项目为java-web项目,hql查询代码写在业务逻辑类中,

2、看日志中,hibernate发出查询语句之后,就会出现x条update语句的日志,而x的值与查询结果数据的行数一致。

3、在update语句出现后,hibernate提交事务的相关类中出异常啦“数据长度10,限制的长度为8,无法update”.

问题原因:

在该类的hbm.xml文件中,发现某一属性的配置,与oracle的关键字date冲突

            <propertyname="Date"column="TXNDATE"type="string"not-null="true"length="8"/>

?将类的属性名字修改即可。

问题分析:

1、即使是hql查询的List对象,也是hibernate的持久态对象。

事务管理对象与事务代理对象<bean id="transactionManagerCtl"/></property></bean><bean id="transactionInterceptorCtl"/></property><property name="transactionAttributes"><props><prop key="*">PROPAGATION_REQUIRED,-Exception</prop></props></property></bean>

?

业务逻辑类与业务逻辑类的代理类<bean id="ADMZXGBOTarget" /></property><property name="interceptorNames"><list><value>transactionInterceptorCtl</value></list></property></bean>

?

2、hibernate在提交的事务的时候,会将当前session中持久态对象与数据库中数据相互比较,如果不同就会出现update语句。

3、hbm.xml中的名字为date的属性会影响到hql转化为正常的sql语句,从而使加载上来的list中对象的date属性值与实际数据库中表的date字段值不一致。

热点排行