我需要更新mysql表中的字符串值。为此我写了一个方法如下。
@Repository
public interface NotificationRepository extends JpaRepository<Notification, Long> {
@Modifying
@Query("update Notification msg set msg.message = ?1 where msg.applicationUser.id = ?2")
String createNewNotification(String message, Long id);
}
我得到以下例外。
java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type!
无法更新表格中的字符串值。只有void或int是可能的吗?这是什么意思?我该如何处理此异常?请帮忙。
答案 0 :(得分:5)
由于错误显示Modifying queries can only use void or int/Integer as return type
,您只能返回void或整数/ int,表示查询已更新了多少行。
改变它,应该没有问题。
@Modifying
@Query("update Notification msg set msg.message = ?1 where msg.applicationUser.id = ?2")
void createNewNotification(String message, Long id);
答案 1 :(得分:3)
您可以更新数据库中的字符串值(您已经通过消息参数值执行此操作)。在使用@Modifying批注时,不能将String对象作为数据库查询的返回值返回。我建议你将返回类型更改为void或int以指示失败成功:
Sub Test_Date()
Dim d As Date
d = "22-09-2017"
d = DateSerial(Year(d), Month(d) - 1, 21)
End Sub
或
@Modifying
@Query("update Notification msg set msg.message = ?1 where msg.applicationUser.id = ?2")
void createNewNotification(String message, Long id);
int / Integer返回值是数据库中更新的行数。所以,如果这是> 0您的反馈表明您的查询已成功执行。
还要看一下@Modifying的选项。