2017-07-03 86 views
0

在Spring框架中,我们有5场动态模型在春季

@Entity 
@Table(name="TblKnow") 
public class Know { 

    @Id 
    private Double idKnow; 
    private String SubjectKnow; 
    private String BodyKnow; 
    private String ImgKnow; 
    private double CountView; 

在JpaRepository设计模型属性我只想查询两个列不是所有的列。

public interface KnowRepository extends JpaRepository<Know,Double> { 



    @Query("SELECT idKnow,SubjectKnow FROM Know") 
    public Page<Know> findCByOrderByIdKnowDesc(Pageable pageable); 

,但是当我尝试运行我得到异常

java.lang.IllegalArgumentException异常如下:无法查询创建TypedQuery一个以上的回报使用要求的结果类型[java.lang.Long中]

,但如果我下面的查询,而不使用它是罚款

public Page<Know> findAllByOrderByIdKnowDesc(Pageable pageable); 

回答

2

您可以创建自定义的构造和使用在JPA查询中仅选择一些字段。

public Know(Double idKnow, String SubjectKnow) { 
    this.idKnow = idKnow; 
    this.SubjectKnow = SubjectKnow; 
} 

而且在JPA查询中使用这个构造函数。确保你使用package的完整路径。

@Query("SELECT NEW packagePath.Know(idKnow,SubjectKnow) FROM Know") 
1

查询:

public Page<Know> findAllByOrderByIdKnowDesc(Pageable pageable); 

作品DUT你知道选择与被映射到正确的专有类(或包装成网页后)字段的对象。

与查询:

@Query("SELECT idKnow,SubjectKnow FROM Know") 
public Page<Know> findCByOrderByIdKnowDesc(Pageable pageable); 

返回一些custome豆/对象春天数据不能以正确的方式进入专有类映射(因为你宣布它的预期收益类包裹成页)。将知识添加到Know with idKnow,SubjectKnow字段中,或者您可以将其包装到具有idKnow,SubjectKnow字段的某个DTO中。