gpt4 book ai didi

java - 如何使用 HQL 查询连接 hibernate Value 对象?

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:04 25 4
gpt4 key购买 nike

嗨,我是编写 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 值

最佳答案

如果您想在 HQL 中使用 join 语法,您必须相应地制定您的映射,因为连接是通过映射启用的。

@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

但是对于你的映射来说这是不可能的。另请记住,就效率而言,大多数 RDBM 都会在 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 相同)。

关于java - 如何使用 HQL 查询连接 hibernate Value 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com