1

嗨,我是编写 HQL 查询的新手,请帮帮我.....我的 Hibernate 有三个 ValueObject,即。

@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 值的值

4

1 回答 1

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将在 a 上执行内部连接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)。

于 2012-10-29T09:49:27.363 回答