2012-10-29 85 views
1

嗨,我是新來編寫HQL查詢請幫我.....我的Hibernate有三個ValueObjects即。如何使用HQL查詢加入hibernate值對象?

@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; 
} 

技能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查詢

回答

1

如果獲得使用USER表的EMAIL姓,名,TEACH_EXP值的值你想在中使用join語法,因爲映射啓用了連接,所以您必須相應地編制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的關聯)。

+0

Thankyou ..正確的,我使用一對多關聯CourseVO和UserVO類。但是您的查詢沒有連接爲什麼HQL不支持連接?或者使用'和'運算符是簡單而正確的方式? –