使用JPQL查询连接表时出错

时间:2014-04-18 01:54:14

标签: jpa jpql

我正在尝试查询名为Section的实体,该实体与名为students的实体有很多关系。见下面的部分实体

@Entity
@Table(name="Sections")
public class Section implements Serializable  {

@Id
private int crn;
private String sectionCode;
private String courseCode;
private String semester;
private int instructorId;
@ManyToOne
@JoinColumn(name="instructorId", referencedColumnName="id" , 
insertable=false,     updatable=false)
private Instructor instructor;
@ManyToOne
@JoinColumn(name="courseCode", referencedColumnName="courseCode" ,
 insertable=false,  updatable=false)
private Course course;
@ManyToMany
@JoinTable(name="Student_Section",
  joinColumns=@JoinColumn(name="Enrolledcrn", referencedColumnName="crn"),
  inverseJoinColumns=@JoinColumn(name="id", referencedColumnName="id"))
private List<Student> students;

一个部分有很多学生,许多学生可以在同一部分。我创建了一个名为Student_Section的连接表,它告诉哪些学生注册了哪个部分是这个表的快照

ENROLLEDCRN ID
----------- --
   13151     6
   13151     7
   13151     8
   13151     9
   13151    10
   13151    11 

问题是:我正在尝试获取特定学期特定学生的部分列表。我尝试了以下查询:

List<Section> student_Sections= em.createQuery("select s from Section s inner join s.students e "
            + "where e.id = :userID AND s.semester = :semester AND e.ENROLLEDCRN = :s.crn").
            setParameter("semester", semester)
            .setParameter("userID", userID)
            .getResultList();

但是出现了这个错误! (指定的输入参数&#39;&#39; {0}&#39;&#39;不遵循Java标识符的规则。) 谁能告诉我这里做错了什么?

这里是他创作后表格部分的一部分:

CRN    COURSECODE INSTRUCTORID SECTIONCODE SEMESTER
-----  ---------- ------------ ----------- -----------

14251   CMPS251              2    L51      Spring 2014
13251   CMPE263              3    L51      Fall 2013

0 个答案:

没有答案