您好我是新写的HQL查询请帮帮我..... 我的Hibernate有三个ValueObjects,即。
@Entity
@Table(name="user")
public class UserVO {
@Id
@Column(name="S_ID")
private String s_id;
@Column(name="FIRSTNAME")
private String firstName;
private String email;
}
CourseVO课程
@Entity
@Table(name="course")
public class CourseVO
{
@Id
@Column(name="S_ID")
public String s_id;
@Column(name="NAME")
public String name;
}
Skillset VO
@Entity
@Table(name="skillset")
public class SkillsetVO
{
@Id
@Column(name="S_ID")
public String s_id;
@Column(name="COURSE_ID")//Foreign Key "USER"
public String course_id;
@Column(name="USER_ID")//Foreign key "COURSE"
public String user_id;
@Column(name="TEACH_EXP")
public String teach_Exp;
}
现在如何使用HQL
查询使用USER表的EMAIL获取FirstName,NAME,TEACH_EXP值的值
答案 0 :(得分:1)
如果您想在join
中使用HQL
语法,则必须相应地计算mapping
,因为通过映射启用了联接。
@Entity class A { @OneToMany private List<B> bs; }
@Entity class B { @Basic int n; }
启用
select b from A a inner join a.b where a = :id
但是你的映射不可能。另请注意,就效率而言,RDBMs
的大部分都会在where a.id = b.id
上执行内部联接。
select u.firstName, c.name, s.teach_Exp
from UserVO u, CourseVO c, SkillsetVO s
where
u.s_id = s.user_id
and c.s_id = s.course_id
and u.email = :email
但我认为你必须审查你的关联。因为我认为SkillsetVO.user_id
应该是SkillsetVO.User
(与UserVO
实体的关联,CourseVO
的相同关系。)