我有两个课程,如:
@Entity
public class Customer{
@Id
private String id;
private String name;
@Column(nullable=false, unique=true)
private String refId;
}
@Entity
public class Account{
@Id
private String id;
@Column(nullable=false, unique=true)
private String accountNr;
@Column(nullable=false)
private String accountType;
@Column(nullable=false, unique=true)
private String refId;
}
我想在refId上加入这两个类,以便在Account字段上进行排序,例如:
select c.* from Customer as c inner join Account as a on a.refId=c.refId orderBy a.accountType
有没有办法在条件
中进行此类查询答案 0 :(得分:1)
您应该使用表格之间的关系,例如@OneToOne
,@ManyToOne
。
之后,写HQL
会很容易
您可以阅读更多相关信息here。
答案 1 :(得分:1)
Hibernate通常不允许你按需提供"像在SQL查询中一样通过Criteria
加入。 However, this appears to indeed be possible using a work-around of having multiple Criterias.
但是,如果您按照Alex的建议在Entity
课程中映射关联,则可以创建更简单的Criteria
,因为Customer
会有{ {1}}对象已经"映射"它:
account
要执行关联,您可以在Criteria criteria = session.createCriteria(Customer.class)
.createCriteria("account")
.addOrder(Order.asc("accountType"));
类中将Entity
字段替换为相关对象。因此,在refId
类中,您可以拥有Customer
对象关联,如此(反之亦然):
Account
假设这是一对一的关系。 You don't need to reference the primary key in one-to-one mapping