Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Spring数据JPA本机查询结果实体_Sql_Spring_Spring Boot_Spring Data Jpa - Fatal编程技术网

Sql Spring数据JPA本机查询结果实体

Sql Spring数据JPA本机查询结果实体,sql,spring,spring-boot,spring-data-jpa,Sql,Spring,Spring Boot,Spring Data Jpa,我的本机联接查询生成一个新结果,该结果是数据库表的组合,因此我为该结果对象创建了一个dto(将是屏幕上的记录列表) 我相信我需要把它变成一个实体,这样JPA才能识别它,这是最好的方法吗 此外,实体需要一个id,我希望让jpa自动生成它,但我得到了“无效参数:未知列名id.ERRORCODE=-4460,SQLSTATE=null” 我的结果集包含4条相同的记录,而不是4条不同的记录,我认为这与我的id字段设置不正确有关 在此问题上如有任何帮助,将不胜感激,谢谢 `公共接口ErrorCodeRep

我的本机联接查询生成一个新结果,该结果是数据库表的组合,因此我为该结果对象创建了一个dto(将是屏幕上的记录列表)

我相信我需要把它变成一个实体,这样JPA才能识别它,这是最好的方法吗

此外,实体需要一个id,我希望让jpa自动生成它,但我得到了“无效参数:未知列名id.ERRORCODE=-4460,SQLSTATE=null”

我的结果集包含4条相同的记录,而不是4条不同的记录,我认为这与我的id字段设置不正确有关

在此问题上如有任何帮助,将不胜感激,谢谢

`公共接口ErrorCodeRepo扩展了JpaRepository{

}
`

创建包含多个表(联接后)结果的navite查询时,不必创建新实体

解决此问题的更好方法是使用接口或类DTO进行投影。 例如,如果要组合来自Person和Address实体的结果,只需创建接口:

public interface PersonView {
    String getFirstName();
    String getLastName();
    String getStreet();
}
您可以看到Person(名字、姓氏)和Address(街道)的组合文件。 您必须将其用作查询响应,如下所示:

@Query(...)
List<PersonView> getPersonWithStreet(String state);
@Query(…)
列表getPersonWithStreet(字符串状态);
您可以在此处阅读更多信息:


好的,我曾经在回购协议中用接口做过一次,但我不喜欢我的结果成为回购协议的一部分……所以我想用类DTO做投影。我已经创建了一个dto类,但是我不知道如何将它与repo绑定,我得到了ConverterNotFoundException您可以提供dto类和存储库代码吗?您不必在存储库接口中创建带有响应的接口。我在上面添加了DTO和repo…我尝试返回对象[],然后循环返回,这很有效,但希望以更简单的方式完成,谢谢。我简化了查询以测试一些东西,当我在查询中使用构造函数表达式时,我可以填充DTO,但如果没有构造函数表达式,我相信我需要匹配实体类的参数。使用我的本机查询和3个表可能更困难,它甚至会知道我的实体吗?我甚至没有为其中一个表创建一个实体…我将首先对一个有实体的表进行实验,看看我是否可以匹配PARM,以及当我将其作为本机查询时会发生什么。
public interface PersonView {
    String getFirstName();
    String getLastName();
    String getStreet();
}
@Query(...)
List<PersonView> getPersonWithStreet(String state);