Student  主键方   一方drop table fe_student;
create table fe_student(
    sid int not null auto_increment,
    sno varchar (20),
    studentname varchar(50),
    password varchar(50),
    primary key (sid)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into fe_student values(1,'078325023','邱文彬','gnzLDuqKcGxMNKFokfhOew==');
insert into fe_student values(2,'078325032','晓晓','gnzLDuqKcGxMNKFokfhOew==');-----gnzLDuqKcGxMNKFokfhOew== 即  12345
Course  外键   多方--考试科目表
drop table fe_course;
CREATE TABLE `fe_course` (
`cno` int(11) NOT NULL auto_increment,
`sid` int(11) default NULL,
`coursename` varchar(255) default NULL,
`score` int(11) default NULL,
PRIMARY KEY  (`cno`),
  KEY `FK5FCDCB9B878B7AB9` (`sid`),
  CONSTRAINT `FK5FCDCB9B878B7AB9` FOREIGN KEY (`sid`) REFERENCES `fe_student` (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into fe_course values(null,1,'JAVA',77);
insert into fe_course values(null,1,'ASP',55);
insert into fe_course values(null,1,'C#',99);
insert into fe_course values(null,1,'C++',66);
insert into fe_course values(null,1,'C',88);
insert into fe_course values(null,1,'VB',44);
insert into fe_course values(null,1,'VFP',65);insert into fe_course values(null,2,'JAVA',99);
insert into fe_course values(null,2,'ASP',88);
insert into fe_course values(null,2,'C#',94);
insert into fe_course values(null,2,'C++',77);
insert into fe_course values(null,2,'C',85);
insert into fe_course values(null,2,'VB',66);
insert into fe_course values(null,2,'VFP',78);
我要做的查询是:from Course c where c.sid=? order by c.score asc 
这句HQL语句是报错:org.hibernate.QueryException: could not resolve property: sid of: com.free.exam.domain.Course [from com.free.exam.domain.Course c where c.sid=? order by c.score asc]我知道这HQL写的不对,我不会写外连接之类的sql语句(mysql数据库),麻烦哪位大大 帮我写出意思如 from Course c where c.sid=? order by c.score asc的HQL语句

解决方案 »

  1.   

    就是通过sid 查出该学生的 各科成绩来
      

  2.   

    com.free.exam.domain.Course  里面有字段 sid 吗??错误都给你指出来了
      

  3.   

    贴出 Student类package com.free.exam.domain;import java.util.Set;public class Student extends User implements java.io.Serializable {
    private static final long serialVersionUID = 1L;

    private Integer sid;
    private String sno;
    private String studentname;
    private String password;

    private Set cours;


    public Student() {
    super();
    }

    public Student(String sno, String studentname, String password) {
    super();
    this.sno = sno;
    this.studentname = studentname;
    this.password = password;
    }
    //---------------剩余set get}
    Student.hbm.xml<hibernate-mapping package="com.free.exam.domain">
    <class name="Student" table="fe_student">
    <id name="sid" type="integer">
    <column name="sid" />
    <generator class="native" />
    </id>
    <property name="sno" column="sno" />
    <property name="studentname" column="studentname" />
    <property name="password" column="password" />
    <set name="cours" cascade="all" 
    lazy="false" >
    <key column="sid" />
    <one-to-many class="Course"/>
    </set>
    </class>
    </hibernate-mapping>
    多方----Coursepackage com.free.exam.domain;public class Course implements java.io.Serializable {
    private static final long serialVersionUID = 1L;

    private Integer cno;
    // private String sno;
    private String coursename;
    private Integer score;

    private Student student;

    public Course() {
    super();
    }

    public Course( String coursename, Integer score) {
    super();
    this.coursename = coursename;
    this.score = score;
    }
    //---------剩余set get


    }Course.hbm.xml<hibernate-mapping package="com.free.exam.domain">
    <class name="Course" table="fe_course">
    <id name="cno" column="cno">
    <generator class="native" />
    </id>
    <property name="coursename" column="coursename" />
    <property name="score" column="score" />
    <many-to-one name="student"
     column="sid" 
     lazy="false"
     />
    </class>
    </hibernate-mapping>我的需求就是:
    就是通过sid 查出该学生的 各科成绩来,问题是Course表里没有sid,只有Student。
      

  4.   

    试试:
    from Course c where c.student.sid=? order by c.score asc  
      

  5.   

    private Set cours;
    你查出来的每个学生实体不是都有这么个科目SET了么?通过学生实体就可以得到学生的每科成绩了
    Set cours = student.cours
      

  6.   

    正解:
    from Course c where c.student.sid=? order by c.score asc