我想在Repository
接口中添加以下SQL查询的方法:
SELECT ID, NAME FROM TABLE_NAME
这个SQL查询按预期工作,但是我想把它写成一个JPA查询方法,我已经尝试了很多方法,但没有让它工作,请帮助我。
之后我尝试过但没有工作:
findAllByIdName(){}
findAllByIdAndName(){}
findByIdName(){}
findByIdAndName(){}
答案 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;
............
}