在本机查询中映射JPA中的值

时间:2018-11-01 17:13:07

标签: sql spring-boot jpa spring-data-jpa

我有一个JPA的spring boot应用程序。 我需要将查询中的值映射到实体。

样本实体

@Entity
@Table(name = "questions")
@DynamicUpdate
public class Question{

 @Id
 @Column(nullable = false)
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 private Long id;

 @Lob
 private String description;

 @Transient
 private int noOfViews;

}

样本查询

@Repository
public interface QuestionRepository extends JpaRepository<Question, Long> {

@Query(value = "select q.*,  2 NO_OF_VIEWS from questions q 
order by q.id DESC ", countQuery = "select count(*) from questions q order by q.id DESC " ,nativeQuery = true)
        Page<Question> findQuestions(Pageable pageable);

}

我需要将值设置为noOfViews字段。有什么想法吗? Spring具有RowMapper接口,但没有为Spring Boot找到任何东西。

1 个答案:

答案 0 :(得分:0)

您可能想看看SqlResultSetMapping Documentation

JPA项目也有一个很好的例子。 See this example

摘录自上述链接。

JPA 2.1引入了新的SqlResultSetMapping类型ConstructorResult,该类型允许将结果集行的列映射到构造函数调用,该调用可以与Value Objects很好地结合使用。

TBH,我尚未在@Transient字段上尝试过此操作,但已将@NamedNativeQuery与Projection DTO结合使用。