如何使用JPA查询方法从表中选择两列的所有数据

时间:2017-11-10 13:01:42

标签: java hibernate jpa spring-data spring-data-jpa

我想在Repository接口中添加以下SQL查询的方法:

SELECT ID, NAME  FROM TABLE_NAME

这个SQL查询按预期工作,但是我想把它写成一个JPA查询方法,我已经尝试了很多方法,但没有让它工作,请帮助我。

之后我尝试过但没有工作:

findAllByIdName(){}
findAllByIdAndName(){}
findByIdName(){}
findByIdAndName(){}

3 个答案:

答案 0 :(得分:5)

首先创建一个结果类:

package com.example;

public class ResultClass{

  private Long id;
  private String name;

  public ResultCalss(Long id, String name){
     // set
  }
}

然后使用自定义@Query:

@Query("select new com.example.ResultClass(e.id, e.name) from MyEntity e")
public List<ResultClass> findIdsAndNames();

答案 1 :(得分:1)

只需使用基于接口或基于类的projections

public interface IdAndName {
    Long getId();
    String getName();
}

public interface MyRepo extends CrudRepository<MyEntity, Long> {
    List<IdAndName> findBy();
}

更多info

答案 2 :(得分:0)

我有类似的实现。实现此目的所需的自定义查询。

例如 -

@Query("SELECT usr.id, usr.name FROM User usr")
public List<User> findIdsAndNames();

用户类是

@Entity
@Table(name="t_user")
public class User{

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

    @Column(name="name")
    private String name;
............
}