繁体   English   中英

如何使用HQL查询联接休眠Value对象?

[英]How Join hibernate Value objects using HQL query?

嗨,我是新来编写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;
}

技能组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值的值

如果要在HQL使用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 a where a.id = b.id执行内部RDBMs

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 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM