Java Hibernate标准API通过id连接
使用Criteria API时,为了向当前实体引用的实体添加过滤器,我使用以下代码:Java Hibernate标准API通过id连接,java,hibernate,criteria,hibernate-criteria,Java,Hibernate,Criteria,Hibernate Criteria,使用Criteria API时,为了向当前实体引用的实体添加过滤器,我使用以下代码: criteria.createAlias("customer", "customer", Criteria.INNER_JOIN); 其中customer是为其创建条件的实体中的customer实体属性。问题是,我需要删除引用的实体,并在类中只保留它的id,即replace @ManyToOne @JoinColumn(name = "ID_CUSTOMER") private CustomerEntity
criteria.createAlias("customer", "customer", Criteria.INNER_JOIN);
其中customer是为其创建条件的实体中的customer实体属性。问题是,我需要删除引用的实体,并在类中只保留它的id,即replace
@ManyToOne
@JoinColumn(name = "ID_CUSTOMER")
private CustomerEntity customer;
借
那么,我需要在我的criteria别名中做什么更改才能使其保持工作状态?这是我在上面介绍的一个过滤器示例,以及上面的连接:
criteria.add(Restrictions.eq("customer.statusId", statusId));
为什么需要删除映射?使用hibernate的全部目的是能够映射真实的对象关系:)您不能在未映射的关系上加入,您需要使用子查询。我明白您的观点,我同意您的观点,但这是一个请求。每个数据库更改都是通过批处理请求完成的,批处理执行会触发这些实体的延迟初始化,这会减慢进程。如果问题是客户的初始化,则可以将获取模式设置为延迟。请参阅manytone注释API。
criteria.add(Restrictions.eq("customer.statusId", statusId));