以下是表结构:JPA @OneToMany不取的子女
desc customer_survey
Name Null Type
----------- -------- ------------
SURVEYID NOT NULL VARCHAR2(10)
CUSTNO NOT NULL VARCHAR2(10)
SRNO NUMBER(10)
AVGRATINGS NUMBER(5,2)
COMMENTS VARCHAR2(50)
SENTON DATE
RESPONDEDON DATE
desc Survey_response
Name Null Type
---------------- -------- ------------
SURVEYRESPONSEID NOT NULL NUMBER(10)
RATINGS NOT NULL NUMBER(2)
QNO NOT NULL VARCHAR2(10)
SURVEYID NOT NULL VARCHAR2(10)
Java类:
public class CustomerSurvey implements Serializable {
@OneToMany(fetch=FetchType.EAGER, mappedBy="customerSurvey",
cascade=CascadeType.ALL)
private Set<SurveyResponse> responses;
......
public class SurveyResponse {
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="SURVEYID", referencedColumnName="surveyId")
private CustomerSurvey customerSurvey;
......
客户端代码:
List<CustomerSurvey> surveys = workService.getSurveysByCustomer("testCNo2");
System.out.println("surveys size = " + surveys.size());
for(CustomerSurvey survey: surveys) {
System.out.println("getting responses from the survey object now..");
Set<SurveyResponse> responses = survey.getResponses();
System.out.println("responses size= .." + responses.size());
}
控制台显示:
调查大小= 1 现在从调查对象获取响应.. 响应大小= ..0
而在所选调查的数据库中有7个响应。
我根据您的评论更改了我的代码。查询日志文件显示:SELECT'com.ge.dsp.iwork.entity.CustomerSurvey'AS NUCLEUS_TYPE,SURVEY.AVGRATINGS,SURVEY.COMMENTS,B0.CITY,B0.COMPANYNAME,B0.CUSTNO,B0.EMAIL,B0.FIRSTNAME ,B0.GENDER,B0.LASTNAME,B0.MIDINIT,B0.PHONE,B0。 “国家”,B0.STREETADDRESS,B0.TITLE,B0.ZIPCODE,SURVEY.RESPONDEDON,SURVEY.SENTON,C0.CUSTNO,C0.DATECREATED ,C0.DATEUPDATED,C0.DESCRIPTION,C0.SRNO,C0.STATUS,SURVEY.SURVEYID FROM CUSTOMER_SURVEY SURVEY INNER JOIN CINOMER B0 ON SURVEY.CUSTNO = B0.CUSTNO LEFT OUTER JOIN SERVICE_REQUEST C0 ON SURVEY.SRNO = C0.SRNO WHERE B0 .CUSTNO = <'testCNo2'> – beetri