我有一个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找到任何东西。
答案 0 :(得分:0)
您可能想看看SqlResultSetMapping
Documentation
JPA项目也有一个很好的例子。 See this example
摘录自上述链接。
JPA 2.1引入了新的SqlResultSetMapping类型ConstructorResult,该类型允许将结果集行的列映射到构造函数调用,该调用可以与Value Objects很好地结合使用。
TBH,我尚未在@Transient字段上尝试过此操作,但已将@NamedNativeQuery与Projection DTO结合使用。