0

この HQL により、非常に役立つ「名前付きクエリのエラー」メッセージが表示されます

    "FROM courseform c WHERE c.application.application IN 
(SELECT a.application FROM application a WHERE a.applicant=: applicant)"

CourseForm には、アプリケーションとの OneToOne 単方向関係があります (これが役立つ場合は、双方向にできる可能性があります)。次に、申請者は、申請者と同じ一方向の OneToOne 関係を持ちます。1 人の申請者が複数の申請を行うことができます。

ここに(要約された)定義があります

コースフォーム

@Entity
@NamedQueries({ 
                @NamedQuery(name = "CourseForm.findByApplicant",
 query = "FROM courseform c WHERE c.application.application IN 
(SELECT a.application FROM application a WHERE a.applicant=: applicant)") })
public class CourseForm implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long id;

@Enumerated(EnumType.STRING)
private Career career;
private String academicPlan;
private String courseName;
@Enumerated(EnumType.STRING)
private ModeOfAttendance modeOfAttendance;

@OneToOne
@JoinColumn(name = "application_fk")
    private Application application;
...
}

応用

@Entity
public class Application implements Serializable {


@Id
@GeneratedValue(strategy = GenerationType.AUTO)
long applicationNumber;

@OneToOne
@JoinColumn(name = "applicant_fk")
private Applicant applicant;

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime lastUpdate = LocalDateTime.now();
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDateTime")
private LocalDateTime submitted = null;

public Application() {
}

申請者

@Entity
    @NamedQueries({ @NamedQuery(name = "Applicant.findByApplicantID", 
query = "FROM Applicant a WHERE a.applicantID= :applicantID") })
public class Applicant implements Serializable {

    private static final long serialVersionUID = -7210042752148566673L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    long id;
    private String applicantID;

    Applicant() {
    }
4

3 に答える 3

1

OK、マークによると、正解は

 FROM courseform c WHERE c.application.applicant =: applicant
于 2013-07-25T16:16:15.123 に答える
0

FROM courseform c WHERE c.application.applicationエラーは.You have used c.application.applicationinwhere句にあると思い
ますFROM courseform c WHERE c.application

于 2013-07-17T08:53:28.287 に答える