hibernate中one to one关联update报hql语法错误,cause by "join cross"错误

问题描述

HQL语句如下:updateOrderodrsetodr.state=:state,odr.sale.date=:date,odr.sale.money=:moneywhereodr.id=:id但是生成的sql语句却是这样的:Hibernate:updatedbo.tb_ordercrossjoinsetorder_state=?,date=?,money=?whereorder_id=?crossjoin后面的表名没有。配置应该没有错啊,用session.get(Order.class,id)可以获取到order对象并且order关联的sale中的数据也可以获取到,但是,用hql的update更新就会报上面的错误,这是怎么回事啊?求高手指点。。

解决方案

解决方案二:
就没有人能帮帮忙吗%>_<%

时间: 2024-08-03 14:15:01

hibernate中one to one关联update报hql语法错误,cause by &amp;quot;join cross&amp;quot;错误的相关文章

关于hibernate中使用mysql函数的问题

问题描述 mysql中select a.* from lst_enterzhaopin a where to_days(pubTime) = to_days(now());成功!查询到今天的信息改进后select a.* from lst_enterzhaopin a where DATE_SUB(CURDATE(), INTERVAL 0 DAY) <= date(pubTime);发觉这个不错,查询几天之内的信息根据day的大小调整,还可以根据小时或者其他type调整到了hibernate中

Hibernate中通过关联映射取得结果集对结果进行排序、分页的方法

问题描述 在Hibernate中通过关联映射, 例如OneToMany等取得一个实体的属性结果集时有没有办法对结果进行排序或者分页. 直接通过HQL或者SQL可以直接利用HQLSQL进行排序分页等操作, 但是如果这类关联映射不支持这些操作那么关联映射的作用感觉也不是很大了. 例如一个User实体有一个Set<Logs>属性, 即一个用户有N多操作日志,OneToMany的, 那么如果通过User.getLogs()取得的结果集将是全部查询··· 解决方案 作为属性,分页应该不行.排序可以: @

Hibernate学习(二)Hibernate中Session之get和load方法的真正区别

最近在学习SHH框架中的Hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入很大.主要是对get方法的说法跟实际运行的结果不一致. 先说一下观点吧: get不支持lazy,load支持lazy: 数据不存在时,get返回null,load则抛出ObjectNotFoundException异常. load方法可以返回实体的代理类实例,而get方法直接读取数据库,所以直接返回

Hibernate中load和get的区别

Hibernate中Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象.其区别在于: 1.get()方法直接返回实体类,load()方法可以返回实体的代理类实例. 2.hibernate load是采用延迟机制(当lazy属性为true时) 而get不采用延迟机制(get语句马上读库) 3.找不到符合条件的数据 get方法将返回null load将会报出ObjectNotFoundExcepion 4.get支持多态查询,load只有在la

在Hibernate中正确实现关联关系中的级联操作(cascading)

关系数据库系统本身就比较复杂,加上Hibernate的O/R映射层,复杂度加重了,很容易出现问题,本人将最近遇到的问题和解决方法做一个总结,整理在下面的一系列文章中 正确理解Hibernate的聚合类型(collection)的使用 在Hibernate中正确实现关联关系中的级联操作(cascading) 在Hibernate框架中编写持久对象类实现外键关联的几点注意事项 本文是第二篇,讲解在one-to-many(一对多)和many-to-one(多对一)关联关系中的cascade特性的声明方

第四章 Hibernate中的持久化对象的生命周期

4.1提供对象状态管理的目的      使开发者不再需要理会底层数据库系统的细节      使用Hibernate的开发者应该总是关注对象的状态(state),不必考虑SQL语句的执行 4.2 Hibernate 仅仅定义了三种状态:瞬时(临时).持久和脱管(游离),对客户端代码隐藏了其内部实现的复杂性 4.2.1 瞬时对象(Transient Object):Hibernate中的持久化对象的生命周期         使用new操作符初始化的对象不是立刻就持久的.它们的状态是瞬时的,也就是说它

Hibernate框架学习之四:关联映射那些事

前言 Hibernate关联关系与客观世界中具体的映射关系很类似,在进行数据库设计的时候常常需要考虑是一对多.多对一等类似的映射关系,这其中涉及数据库设计方面的知识.映射关系可以分为单向与双向两种,具体又包括一对多.多对一.一对一以及多对多四种.所以总共有八种映射关系.这里只介绍了XML配置文件的版本. 下面的配置文件的配置方式都以下面的两个持久化类作为模板: public class Person { private int id; private String name; private i

一口一口吃掉Hibernate(二)——别被世俗蒙蔽了双眼:Hibernate中Session之get和load方法的真正区别

      最近在学习SHH框架中的Hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入很大.主要是对get方法的说法跟实际运行的结果不一致.       先说一下观点吧: get不支持lazy,load支持lazy: 数据不存在时,get返回null,load则抛出ObjectNotFoundException异常. load方法可以返回实体的代理类实例,而get方法直接

Hibernate中主外键的插入问题

问题描述 有两张表,一张userinfo表,一张good表.其中good表中Saler_id列与userinfo表中主键列User_id是主外键的关系.其中在Hibernate的映射文件中的代码如下<many-to-onename="userinfoBySalerId"class="org.epai.web.entity.Userinfo"fetch="select"><columnname="Saler_id&quo