【发布时间】:2013-11-29 23:46:36
【问题描述】:
我有一个奇怪的问题。我想创建这样的数据库: 一个学生可以有很多科目。学生对一门学科进行一次评估。所以我有 具有 ID、姓名、姓氏和 A_I id 的班级学生,例如:
@Id
@GeneratedValue
long id_student;
在学科课上我有:
@Id
@GeneratedValue
long id_subject;
String name;
double graduate
我有第三堂课,名为 StudentWithGraduate:
@Id
@GeneratedValue
long id;
double evaluation;
@OneToOne
Student student;
@OneToOne
Subject subject;
我想我可以做得更好,但我不知道该怎么做。但这不是主要问题。这个,我写的是工作,但我想在查询中做一些连接,比如:
Vector<Object[]> v = (Vector<Object[]>) em.createQuery(
"select p.name, o.graduate from Student s
left join StudentWithGraduate o on s.id_student=o.student
left join Subject p on p.id_subject=o.subject where
s.surname='"+name+"'").getResultList();
它会抛出一个错误: 异常描述:对象比较只能与 OneToOneMappings 一起使用。其他映射比较必须通过查询键或直接属性级别比较来完成。
如何更改此数据库方案或更改该查询?
对不起我的英语。
附言。当我做研究时,我发现了@joinTables,但我不知道如何使用它..
【问题讨论】: