Java Spring data@Query中动态修改实体的方法

Java Spring data@Query中动态修改实体的方法,java,spring-data,spring-data-jpa,Java,Spring Data,Spring Data Jpa,例如,我有很多类似的实体:RssFeedEntry。。。OtherFeedEntry所有字段都有feedEntry.read和feedEntry.id字段(例如在单独的@MappedSuperclass抽象类中描述的),但映射到不同的表。因此,为了执行更新,我必须为每个具有 @Modifying(clearAutomatically = true) @Query("update RssFeedEntry feedEntry set feedEntry.read =:isRead where

例如,我有很多类似的实体:RssFeedEntry。。。OtherFeedEntry所有字段都有feedEntry.read和feedEntry.id字段(例如在单独的@MappedSuperclass抽象类中描述的),但映射到不同的表。因此,为了执行更新,我必须为每个具有

@Modifying(clearAutomatically = true)
@Query("update RssFeedEntry feedEntry set feedEntry.read =:isRead where     feedEntry.id =:entryId")
void markEntryAsRead(@Param("entryId") Long rssFeedEntryId, @Param("isRead") boolean isRead);
updatefeedentry set feedEntry.read=:isRead其中feedEntry.id=:entryId

有没有办法避免每个实体都复制过去?

当然,在面向对象语言中可以轻松做到这一点。例如,在您可能使用的Spring数据中,有一个名为的接口和一个名为的接口,该接口实现了存储库,还有一个名为的接口

例如,如果使用CRUDepository,则可以使用CRUD操作,而无需编写一行代码

就像这样,您可以扩展Repository、Crudepository或您正在使用的任何其他接口,并添加您自己的方法,在您的案例中markEntryAsRead,并在实际服务中使用此接口,如
MyService Extendes MyCustomRepository

下面是一个可以在应用程序中使用的实现示例:

这应该有帮助:
update <AnyOfFeedEntryr> feedEntry set feedEntry.read =:isRead where     feedEntry.id =:entryId