Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate:在一个属性上连接两个表_Hibernate_Jpa_Orm - Fatal编程技术网

Hibernate:在一个属性上连接两个表

Hibernate:在一个属性上连接两个表,hibernate,jpa,orm,Hibernate,Jpa,Orm,我在prod DB中有两个具有以下属性的表: Bills table : id, customer_id, total Project table : id, customer_id 而且customer\u id在任何表中都不是外键。有没有办法用hibernate标准连接这些表?尝试将DetachedCriteria与子查询一起使用。但却无法加入到表中 您必须更改映射,以便在您的账单中有一个额外的映射: @ManyToOne @JoinColumn(name = "customer_id"

我在prod DB中有两个具有以下属性的表:

Bills table : id, customer_id, total 
Project table : id, customer_id

而且
customer\u id
在任何表中都不是外键。有没有办法用hibernate标准连接这些表?尝试将
DetachedCriteria
子查询一起使用。但却无法加入到表中

您必须更改映射,以便在您的
账单中有一个额外的映射:

@ManyToOne
@JoinColumn(name = "customer_id", referencedColumnName = "customer_id")
private Project project;
然后,您可以使用标准方式加入标准

更新

如果可以使用HQL而不是条件。。然后可以使用旧的联接样式:

select b.name 
from Bills b, Project p 
where b.customer_id = p.customer_id
更新2

如果必须使用xml,请将您的指定为:

<many-to-one name="project" class="com.Project" ..>
   <column name="customer_id" property-ref="customer_id"/>
</many-to-one>


感谢Maciej的回复,但不幸的是,我无法编辑映射,我们没有使用基于注释的映射。还有别的办法吗?我想我可以。"". 这是我在bills hibernate.xml中的内容,其中客户端是一个不同的表。如果可以使用hql而不是条件,我已经更新了帖子。这样做的好处是,您可以将其命名为NamedQuery,并加快整个查询时间。这不是真的,但可以让DetachedCriteria正常工作。谢谢你的关心