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(); 展开
还有个学校表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(); 展开
3个回答
展开全部
可以用多表关联,在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文件放在同一包中
展开全部
String hql = "update user set u.userName = ' " + userName + " ' and u.school.school_id = ' " + school + " ' where u.userId = ' " + userId + " ' ";
这样试试,还有你的那个'"+ school +"'是不知道是什么。。 你自己看看
这样试试,还有你的那个'"+ school +"'是不知道是什么。。 你自己看看
追问
User类的一个属性
private School school;
后来hql里的school是我根据id查一遍数据库取得的对象。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询