使用EJB实体,我需要更新100+列表中单行的单个列。我通常读取/加载行并进行必要的更新,但这似乎是压倒性的,因为所有剩余的列将不必要地更新,更不用说性能损失了。 有没有办法只是更新单列,类似于传统的JDBC方式?
答案 0 :(得分:0)
您可以执行更新查询:
update Foo f set f.someField = :someValue where f.id = :id
请注意,如果实体已经加载,则此更改不会反映在实体中,并且它将绕过乐观锁定。 确保不要过早优化。如果只是修改实体足够快,那就这样做。
我宁愿担心拥有超过100个字段的实体。也许你应该把它分成几个实体。
答案 1 :(得分:0)
使用JPA,首先可以查询需要更新的记录实体,并修改该实体的属性。然后调用EntityManager来更新此实体。因此,您只需更新一条要更新的记录。