HQL实现对表的insert操作

用过HQL(Hibernate查询语言)的同学,肯定知道这个坑爹的东西是没有“真正”的insert的,他的insert语法是这样的

INSERT INTO ... SELECT ... form

也就是只能把已有的内容insert到一个新的地方,无法真正向表中插入新的内容,真是蛋疼。

然而,HQL是可以update的,是可以update的,是可以update的(重要的话说三遍)

于是,借助update,我们就可以实现我们想要的insert了~

你想到应该怎么做了吗?

假设有一张user表,有id,name两个属性,其中的id是auto_increment的,要使用HQL向其中插入数据,需要两步

1,

update User set name = :newName where id = 0";
2,

insert into User(id, name) select u.id, u.name from User u where u.id = 0;

也就是先把要insert的内容update到id = 0的这一列,然后再把这一列的内容用HQL的insert插入进去。

这样做可以认为是把id=0的这一列看作一个“缓冲区”,同时要注意进行其他操作,比如统计user表里有多少列的时候,要把最后的结果减1,因为id=0这一列并不是有效数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值