Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Hibernate @jpa中的SqlResultsMapping列名无效错误_Hibernate_Jpa - Fatal编程技术网

Hibernate @jpa中的SqlResultsMapping列名无效错误

Hibernate @jpa中的SqlResultsMapping列名无效错误,hibernate,jpa,Hibernate,Jpa,我使用JOIN语句通过createNativeQuery从两个表(申请人和地址)获取数据。 但是我得到了一个无效的列名错误。 实际情况是: 在申请班 @SqlResultSetMapping(name="menu-details", entities={ @EntityResult(entityClass=Applicant.class, fields = { @FieldResult(name="

我使用JOIN语句通过createNativeQuery从两个表(申请人和地址)获取数据。 但是我得到了一个无效的列名错误。 实际情况是:

在申请班

@SqlResultSetMapping(name="menu-details",
        entities={
                 @EntityResult(entityClass=Applicant.class, fields = {
                        @FieldResult(name="id", column="APPLICANT_ID"),
                        @FieldResult(name="contactNo", column="CONTACT_NO"),
                        @FieldResult(name="dateOfBirth", column="DATE_OF_BIRTH"),
                        @FieldResult(name="name", column="APPLICANT_NAME"),
                        @FieldResult(name="status", column="STATUS")
                      }),
           @EntityResult(entityClass=AddressA.class, fields = {
                    @FieldResult(name="state", column="STATE")
            })
    }
)

在DAO中,我正在尝试
String nativeQuery=“选择distinct(LA.申请人\ ID)作为申请人\ ID,LA.联系人\编号作为联系人\编号,LA.出生日期\为出生日期\名,LA.申请人\名作为申请人\名,
LA.状态为状态,LAA.状态为贷款申请人LA的状态,
贷款\地址\ LAA LAA,其中LA.申请人\ id=LAA.申请人\ id”;
Query q=entityManager.createNativeQuery(nativeQuery,“菜单详细信息”);
ArrayList menuList=新的ArrayList();
List objects=q.getResultList();
System.out.println(“查询数量为”+objects.size());
用于(对象:对象){
if(申请人的对象实例){
申请人=(申请人)对象;
System.out.println(applicator.getId());
System.out.println(applicator.getName());
System.out.println(applicator.getContactNo());
}
if(AddressA的对象实例){
AddressA地址=(AddressA)对象;
System.out.println(address.getState());
}
}
执行时,我得到一个错误

原因:java.sql.SQLException:列名无效
位于oracle.jdbc.dbaccessdbaccess.DBError.throwSqlException(DBError.java:134)
位于oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
在oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
中,您可以编写:

from loan_applicant LA, loan_address_a LAA where La.applicant_id=la. applicant_id
也许你想要的是:

from loan_applicant LA, loan_address_a LAA where LA.applicant_id=LAA.applicant_id

:抱歉,这是一个复制粘贴错误。我已更正了此处的查询。在sqldeveloper中,我得到了同一查询的两条记录。我想我是因为列的顺序不正确而出错了?执行
q.getResultList()
时是否发生了错误?那真的需要吗?distinct+其他变量将覆盖distinct。并删除所有结果列的别名(as…)。您正在指定要使用的SqlResultSetMapping,该映射尝试从SQL结果创建申请者和地址实体,但它似乎不完整。例如,地址真的只有一个状态字段吗?如果没有,则还需要返回构建地址所需的其他字段。尝试在本机查询中使用select*作为别名,除非返回的字段与实体中映射的字段不同,否则不需要FieldResult。
from loan_applicant LA, loan_address_a LAA where LA.applicant_id=LAA.applicant_id