Java JPA仅在模型存在时更新
em.merge不是一个选项,因为如果id不存在,我不需要新行。此外,它还调用一个额外的selectJava JPA仅在模型存在时更新,java,hibernate,jpa,hibernate-jpa,Java,Hibernate,Jpa,Hibernate Jpa,em.merge不是一个选项,因为如果id不存在,我不需要新行。此外,它还调用一个额外的select 我不想做查找,然后调用合并,因为这将再次是额外的选择 我希望找到一种不必编写JPQL查询的方法,因为我不确定要更新的字段的确切数量 如果无法进行“额外”选择,您希望如何确定是否存在某些内容?您是否尝试过@Query(value=“update E set field=:value WHERE id=:id”)?如果id不存在,它不会更新任何内容。所以您想创建一个新对象(非托管),然后尝试将其持久
如果无法进行“额外”选择,您希望如何确定是否存在某些内容?您是否尝试过
@Query(value=“update E set field=:value WHERE id=:id”)
?如果id不存在,它不会更新任何内容。所以您想创建一个新对象(非托管),然后尝试将其持久化?如果您不想编写jpql
update查询,我认为额外的选择是不可避免的。使用这种方法,正如您所说,您需要调用entityManager.find
,然后调用update
方法。但我认为最好的解决方案是使用jpql更新查询(如评论中所述)。因为它没有额外的选择开销,并且在数据不存在时也不会进行任何更改。@hamed是的,我希望除了编写JPQL查询之外还有其他方法。如果不能进行“额外”选择,您希望如何确定是否存在某些内容?您是否尝试过@query(value=“update E set field=:value WHERE id=:id”)
?如果id不存在,它不会更新任何内容。所以您想创建一个新对象(非托管),然后尝试将其持久化?如果您不想编写jpql
update查询,我认为额外的选择是不可避免的。使用这种方法,正如您所说,您需要调用entityManager.find
,然后调用update
方法。但我认为最好的解决方案是使用jpql更新查询(如评论中所述)。因为它没有额外的select开销,而且如果数据不存在,也不会进行任何更改。@hamed是的,我希望除了编写JPQL查询之外,还有其他方法。