Spring Data JPA-大规模更新不起作用

时间:2018-12-17 19:36:45

标签: java hibernate spring-mvc spring-data-jpa spring-data

我有一个基本的SpringBoot 2.1.1.RELEASE应用程序。使用Spring Initializer,JPA,嵌入式Tomcat并将其作为具有宁静架构的可执行JAR打包,我有了这个存储库:

@Repository
public interface MenuPriceAlertNotificationRepository 
                    extends CrudRepository<MenuPriceAlertNotification, Long> {




    @Transactional
    @Modifying
    @Query("update MenuPriceAlertNotification n set n.read = :status where n.id in :notificationIdList and n.user.id = :userId")
    void changeNotificationListReadStatus(  @Param("notificationIdList") List<Long> notificationIdList, 
                                            @Param("userId") long userId, 
                                            @Param("status") boolean status);


}

但不更新数据库中的行

2 个答案:

答案 0 :(得分:1)

尝试此代码,

    @Transactional(propagation =Propagation.REQUIRED,isolation=Isolation.SERIALIZABLE,readOnly=false,transactionManager="transactionManager")
@Query("update MenuPriceAlertNotification n set n.read = :status where n.id in :notificationIdList and n.user.id = :userId")
void changeNotificationListReadStatus(  @Param("notificationIdList") List<Long> notificationIdList, 
                                        @Param("userId") long userId, 
                                        @Param("status") boolean status);

如有任何问题,请告知。

答案 1 :(得分:0)

我不确定您要做什么,但是作为更新查询,您还可以通过选择{raw1}的id主键来使用ggplot(df, aes(x, colour = g)) + stat_ecdf() + scale_x_log10(breaks=breaks, limits=c(0.001, 1000)) + theme(axis.text.x = element_text(size=8, angle=45)) + labs(title="", y ="", x="PR") + theme_classic() 中的save()函数在您的表格中更新。

另一点是您要考虑的CrudRepository参数,您确定可以为List<Long> notificationIdList提供一个列表吗?如果没有,则可以在列表的元素上使用for循环,并在每次迭代时调用查询函数@Param