0

我有一个实体类和存储库。在这里,我正在尝试执行更新查询但不工作。如何更新本机查询中的 Lob 列或 jpa 查询的任何其他解决方案以更新 Lob 列。

@Entity
@Table(name = "comment")      
public class Comment implements Serializable {

@Basic
@Lob
@Column(name="Article_COMMENT", columnDefinition="TEXT")
private String articleComment;

@Basic
@Column(name = "ID_ARTICLE")
private Long articleId;

}

@Repository
public interface commentRepository extends JpaRepository<Comment, Long> {

   @Query(value = "UPDATE comment set articleComment=: articleComment WHERE articleId =: articleId", nativeQuery=true)
   void  updateComment(@Param("articleComment") String articleComment, @Param("articleId") Long articleId );

}

错误:

No results were returned by query.

JpaSystemException thrown with message: could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet

4

1 回答 1

1

你的问题很模糊,所以我只能根据假设来回答。我认为您想更新实体的 articalComment 字段。您可以简单地使用 JpaRepository 的 .save() 方法。您的代码应如下所示。在这里,我还假设您的 articleId 是您的实体类的唯一标识符。

@Entity
@Table(name = "comment")      
public class Comment implements Serializable {

    @Basic
    @Lob
    @Column(name="Article_COMMENT", columnDefinition="TEXT")
    private String articleComment;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID_ARTICLE")
    private Long articleId;
}

现在您的 ID 应该是唯一的,并且有一个 @Id 注释来在 spring data JPA 中识别它。您不必在 JPA 存储库中添加任何代码。只需调用 commentRepository.save(commentObject) 方法。如果commentObject 的 ID 为 0,则将创建一个新的 Comment。如果 ID 是正值并且存在于您的表中,则该特定行将被更新而不是创建。

于 2021-02-25T07:39:11.977 回答