java在Spring Boot中从CrudePository访问表的几列
我有一个扩展crud存储库的接口
public interface PersonRepo extends CrudRepository<Person, String> {
@Query(value="select name from PERSON where addr=?1", nativeQuery = true)
List<Person> getPeronUsingAddress(String addr);
}
Person实体如下所示:
class Person {
private String name;
private String phoneNumber;
private String address;
//along with getters setters and all basic hibernate annotation to persist and retrieve
}
person对象被保存到数据库中,当hibernate执行正确的查询时,在检索本机查询时工作正常。但我无法获取返回类型
如果返回类型是List of Person,那么我得到的是InvalidDataAccessResourceUsageException
如果我创建一个接口并使用接口列表作为返回类型,比如
interface response { String getName(); } List of Response interface getPeronUsingAddress(String addr);
然后我在服务中获取代理对象。我无法从代理中获取数据
我做的另一种方法是使用对象列表作为返回类型。但不可能对我的个人目标感到沮丧
怎么做。?或者有没有其他解决方案,通过它我可以从crud存储库返回选择性列,并获得带有这些选定列的Java对象
# 1 楼答案
要从实体中提取选定列,可以执行以下操作:
创建DTO或Java对象,如下所示:
下面是您的查询,但它不是本机的,如果您想保留本机查询,那么您需要使用类似here的ResultTransformer