1

こんにちは、HQL クエリを書くのは初めてです。助けてください.....私の Hibernate には 3 つの 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;
}

コースVOクラス

    @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に対して内部結合を実行することに注意して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への関連付けと同じ)。UserVOCourseVO

于 2012-10-29T09:49:27.363 に答える