晚上好!
我一直在学习并部分使用休眠一段时间,但在使用 hql 连接时遇到了麻烦。
我遵循这些说明只是为了练习,看看它是如何工作的......
http://www.java2s.com/Tutorial/Java/0350__Hibernate/HSQLJoinTwoClasses.htm
他基本上创建了 3 个类:供应商、产品、软件
一个供应商有很多产品 许多产品都有一个供应商
一切都很好......除了我无法理解一件阻止我在自己的代码中实现它的特定事情。这是我无法理解的部分:
<class name="Product">
<id name="id" type="int">
<generator class="increment"/>
</id>
<property name="name" type="string"/>
<property name="description" type="string"/>
<property name="price" type="double"/>
<many-to-one name="supplier" class="Supplier" column="supplierId"/>
</class>
<class name="Supplier" >
<id name="id" type="int">
<generator class="increment"/>
</id>
<property name="name" type="string"/>
<bag name="products" inverse="true" cascade="all,delete-orphan">
<key column="supplierId"/>
<one-to-many class="Product"/>
</bag>
</class>
The query would be:
SELECT s.name, p.name, p.price
FROM Product p INNER JOIN p.supplier AS s";
当到处都没有定义供应商ID时,为什么他使用“supplierId”作为列值。我无法弄清楚后台发生了什么或为什么它甚至工作......
多年来,我一直在寻找解释。希望你们中的一个人有过类似的经历,可以帮助我。真的很棒。希望我不是太含糊。
祝你有美好的一天,迈克尔·卡格尔
解决方案
问题是我错过了数据库中实际的外键列被称为供应商ID ...create table Product(
id int,
name varchar,
description varchar,
price decimal(6,2),
>>>> supplierid int <<<<<
)
(我再也不会像那样复制和粘贴代码了..)@carbontax 的帖子和@MikkoMaunu 的帖子
对其余部分进行了很好的解释