我有这些表:cont(id_cont, user, pass) emp(emp_id, 姓名, cont_id_cont (fk))
@Entity @Table(name = "emp", catalog = "", uniqueConstraints = { @UniqueConstraint(columnNames = "cont_id_cont") }) public class Emp implements java.io.Serializable{ private int id_emp; private ContUser contUser; private String name;
和
@Entity
@Table(name = "cont", catalog = "", uniqueConstraints = {
@UniqueConstraint(columnNames = "pass") })
public class Cont implements java.io.Serializable{
private int id_cont;
private String user;
private String pass;
private Set<Emp> empForCont = new HashSet<Emp>(0);
}
现在:我想要这个查询: 从 cont 中选择 cont.user、emp.name、emp.cont_id_cont 内连接 emp on cont.id_cont= emp.cont_id_cont where cont.user = 'gbs04405';
最佳答案
这种访问数据的方式并不是 ORM
的目的。如果您使用 Hibernate
,您(通常)应该通过对象访问数据。要实现此目的,请在必要时在对象之间定义关系 @OneToMany
、@ManyToOne
和/或 @ManyToMany
,而不是嵌入 SQL 之类的约束.
此外,您应该考虑使用 HQL
(或 JPQL
)而不是纯 SQL
来实现您想要的效果。
应该是这样的:
SELECT e FROM Emp e JOIN e.contUser u WHERE u.user = :userstring
您可以查看here了解更多 JPQL
语法。
关于java - 如何使用hibernate查询两个表(连接表)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166319/