【发布时间】:2018-05-29 11:33:13
【问题描述】:
这是对我的情况和我无法实现的要求的简单描述:
我有两个表“地址”和“人”与 FK 相关:
CREATE TABLE `address` (
`id_address` int(11) NOT NULL,
`street` varchar(250) DEFAULT NULL,
`city` varchar(250) DEFAULT NULL,
PRIMARY KEY (`id_address`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `person` (
`id_person` int(11) NOT NULL,
`name` varchar(250) DEFAULT NULL,
`id_sent_address` INT(11) NOT NULL,
PRIMARY KEY (`id_person`),
CONSTRAINT `fkSentAddress` FOREIGN KEY (`id_sent_address`) REFERENCES `address` (`id_address`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我想使用这两个表创建一个休眠映射来创建一个简单的模型。
重要的是我需要使用“join”进行映射,如下所示:
<class name="xxx.PersonAndAddress" table="person">
<id name="idPerson" type="java.lang.Integer">
<column name="id_person" />
<generator class="identity" />
</id>
<property name="name" type="java.lang.String" column="name"/>
<join table="address">
<key column="id_address" />
<property name="street" column="street" />
<property name="city" column="city" />
</join>
</class>
这不起作用,因为“加入”键列“id_address”正在创建针对主键“id_person”的映射,我不知道如何更改此行为列以使用该人的“ id_sent_address”而不是“id_person”。有什么解决办法吗?
正如我所说,这是一个简单的情况,描述了我真正的问题,涉及更多的领域和更多的逻辑,但这就是问题的本质。
现在我正在为每个地址的字段使用公式,但它的字段数量很大,我会使用 join 来提高其性能。
非常感谢!
【问题讨论】:
-
你为什么不用
ORM? -
hibernate 是一个 ORM...你是什么意思?
-
您可以编写一个类并使用
@Entity,而不是定义架构。因此,您使用java class管理您的表 -
我需要使用休眠
标签: java mysql hibernate hibernate-mapping