hibernate 查询结果 修改后 原表插入 如何实现

snake841026 2011-03-17 09:34:10
假设有一table
p{
int id;
int step;
int year;
varchar name;
……
}
执行query = s.createQuery(from p where step=2 and year=2011);
然后把查询结果数据中的 step 设置成3后,重新插入表p
该如何操作。

...全文
135 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
snake841026 2011-03-18
  • 打赏
  • 举报
回复
我已经找到解决方法了,就是5楼的方法。
查询数据放在list中,遍历过程中新建p,通过copy对象的方法(用cglib里的beancopier),将查询结果的各属性复制到p的对应属性中,然后将id置为null,step设置为3,再save。
查询结果直接id设置为null,step设置为3,再insert可能不行。(没试过,因为查询出来的对象是持久状态,估计不行)
hepeng_8 2011-03-17
  • 打赏
  • 举报
回复
from p where step=2 and year=2011
这样的hql可以吗??
我没用过这样的
回答下
luman2002 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 snake841026 的回复:]
hibernate 查询结果 修改后 原表插入
是原表插入 ,不是原表更新
[/Quote]
修改后用.save()方法
zn85600301 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zn85600301 的回复:]

你insert 不就行了
[/Quote]
写一个copy 对象值的通用方法
或者简单的直接将ID主键 设为null 然后insert
zn85600301 2011-03-17
  • 打赏
  • 举报
回复
你insert 不就行了
luman2002 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zn85600301 的回复:]
将你得到的对象P的 p.setStep(3) 最后update(p)
[/Quote]
+1
snake841026 2011-03-17
  • 打赏
  • 举报
回复
hibernate 查询结果 修改后 原表插入
是原表插入 ,不是原表更新
zn85600301 2011-03-17
  • 打赏
  • 举报
回复
将你得到的对象P的 p.setStep(3) 最后update(p)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧