我使用一条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")
})
})
In DAO, I am trying
String nativeQuery="select distinct (LA. APPLICANT_ID) as APPLICANT_ID, LA.CONTACT_NO as CONTACT_NO,LA.DATE_OF_BIRTH as DATE_OF_BIRTH,LA.APPLICANT_NAME as APPLICANT_NAME,
LA.STATUS as STATUS, LAA.STATE as STATE from loan_applicant LA,
loan_address_a LAA where LA.applicant_id=LAA.applicant_id";
Query q=entityManager.createNativeQuery (nativeQuery,"menu-details");
ArrayList<Applicant> menuList=new ArrayList<Applicant>();
List<Object> objects=q.getResultList();
System.out.println("the no of queries is "+objects.size());
for(Object object:objects){
if(object instanceof Applicant){
Applicant applicant=(Applicant)object;
System.out.println(applicant.getId());
System.out.println(applicant.getName());
System.out.println(applicant.getContactNo());
}
if(object instanceof AddressA){
AddressA address=(AddressA)object;
System.out.println(address.getState());
}
}
while executing I am getting an error `Caused by: java.sql.SQLException: Invalid column name at oracle.jdbc.dbaccessdbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)`发布于 2013-07-30 15:19:56
您可以这样写:
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_idhttps://stackoverflow.com/questions/17939904
复制相似问题