hibernate 一对多update操作的hql语句怎么写?

有个学生表user_id,user_name,school_id还有个学校表school_id,school_name我先取得了school的持久化对象,然后执行下面的h... 有个学生表 user_id, user_name, school_id
还有个学校表school_id, school_name
我先取得了school的持久化对象,然后执行下面的hql语句
String hql = "update user set u.userName = ' " + userName + " ' and u.school = ' " + school + " ' where u.userId = ' " + userId + " ' ";

然后后台输出的sql语句的部分是
school_id = 'com.campus.model.School@6e3b4c',

我的方法是不对的,哪位告诉我应该怎么更新学校的id
因为我不需要更新user的所有信息,所以用hql语句来更新指定的字段
错的原因是找到了,就是school是对象,而String hql是一个字符串,拼接字符串的时候school这个对象是自动调用了toString方法,转成字符串了。

解决了,
String hql = "update user u set u.userName = ? , u.userUpdatetime = ? , u.school = ? where u.userId = ?";
Session session = getSession();
session.beginTransaction();
Query query = session.createQuery(hql);
query.setString(0, userName );
query.setTimestamp(1, updatetime) ;
query.setParameter(2,school);
query.setInteger(3, userId);
query.executeUpdate();
session.getTransaction().commit();
展开
 我来答
味洋扛590
2011-06-08 · TA获得超过1647个赞
知道小有建树答主
回答量:1640
采纳率:100%
帮助的人:822万
展开全部
可以用多表关联,在myeclipes中添加Hibernate支持后反向生成实体类文件,在实体类文件中该:学生对学校是多对一操作,在student.Java中的学校id关联去掉,添加school类型的实例和get和set,在student.hbm.xml中删除相关的学生id关联,添加相应的映射。而在school。java中,添加Set<Student> stus = new HashSet<Student>() 并且相应的get以及set,在school.hbm.xml中添加相应的映射。并且设置类型为save-update或者是all或者delete,然后再重新编译,这两个hbm。xml文件要跟相应的。class文件放在同一包中
497123505
2011-06-08 · 超过24用户采纳过TA的回答
知道答主
回答量:92
采纳率:100%
帮助的人:62.5万
展开全部
String hql = "update user set u.userName = ' " + userName + " ' and u.school.school_id = ' " + school + " ' where u.userId = ' " + userId + " ' ";
这样试试,还有你的那个'"+ school +"'是不知道是什么。。 你自己看看
追问
User类的一个属性
private School school;
后来hql里的school是我根据id查一遍数据库取得的对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
even198802
2011-06-08
知道答主
回答量:2
采纳率:0%
帮助的人:3427
展开全部
用update模板。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式