【问题标题】:How to update column in JPA native query which annothed with @Lob如何更新带有@Lob 的 JPA 原生查询中的列
【发布时间】:2021-05-27 00:19:15
【问题描述】:

我有一个实体类和存储库。在这里,我正在尝试执行更新查询但不工作。 如何更新本机查询中的 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

【问题讨论】:

    标签: spring-boot hibernate jpa hibernate-native-query


    【解决方案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 是正值并且存在于您的表中,则该特定行将被更新而不是创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2017-11-21
      • 2011-04-05
      相关资源
      最近更新 更多