0

假设我们有一个 User 类,如果我想更新它的名字:

用户用户 = User.findById(123); user.name = "某人"; 用户.save();

生成的 SQL 将是

update user as user0 set user0.name = ? user0.email = ? .....

这意味着Play没有意识到我只想更新一个字段。有什么办法可以使生成的 SQL 只更新指定的字段?

4

3 回答 3

1

信息:这是 Play 2 + Ebean 的答案!所以它不适用于 Play 1 + JPA

Ebean的API中有一些选项,所以你应该检查它并选择一个:

于 2013-07-03T07:48:11.427 回答
0

您可以使用休眠的动态更新功能:http ://www.mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/

但请记住,这会对性能产生负面影响,因为数据库无法缓存语句。有关其他说明,请参见此处:休眠:动态更新动态插入 - 性能效果

于 2013-07-04T07:33:47.707 回答
0

这取决于 Play(或实际上是 Avaje Ebean)是否实际跟踪更改了哪些字段。相反,更新所有字段更简单。

这在性能方面也不是问题,所以我不会浪费太多时间寻找解决方案。

于 2013-07-03T05:39:30.807 回答