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

Java 如何使用JPA查询方法从表中选择两列的所有数据,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,我想在我的存储库界面中添加一个用于以下SQL查询的方法: SELECT ID, NAME FROM TABLE_NAME 这个SQL查询按预期工作,但我想将其作为JPA查询方法编写,我已经尝试了很多方法,但都没有成功,请帮助我 以下是我尝试过但不起作用的内容: findAllByIdName(){} findAllByIdAndName(){} findByIdName(){} findByIdAndName(){} 首先创建一个结果类: package com.example; pub

我想在我的
存储库
界面中添加一个用于以下SQL查询的方法:

SELECT ID, NAME  FROM TABLE_NAME
这个SQL查询按预期工作,但我想将其作为JPA查询方法编写,我已经尝试了很多方法,但都没有成功,请帮助我

以下是我尝试过但不起作用的内容:

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

首先创建一个结果类:

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();
@Query(“从MyEntity e中选择new com.example.ResultClass(e.id,e.name))
公共列表findIdsAndNames();

我有类似的实现。实现这一点需要自定义查询

e、 g-

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

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

公共接口IdAndName{
长getId();
字符串getName();
}
公共接口MyRepo扩展了Crudepository{
List findBy();
}

更多信息。

请参阅此帖子:您应该为“获取选定内容”列使用
@Query
注释。请参阅此帖子是否说明MyEntity与ResultClass相同?否。。MyEntity是一个用@Entity注释的类。ResultClass是一个可以在类[com.example.ResultClass]上找到适当构造函数的函数。预期参数为:int、java.lang.StringIn ResultClass和POJO都是int表示Id和String表示name您正在使用的构造函数的定义是什么?
@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;
............
}
public interface IdAndName {
    Long getId();
    String getName();
}

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