gpt4 book ai didi

java - 使用 join into hibernate mapping against main class foreign key

转载 作者:行者123 更新时间:2023-11-30 23:44:33 25 4
gpt4 key购买 nike

这是对我的情况和我无法实现的要求的简单描述:

我有两个与 FK 相关的表“address”和“person”:

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;

我想使用这两个表创建一个 hibernate 映射来创建一个简单的模型。

重要的是,我需要使用“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”。有什么解决办法吗?

我说了,这是描述我真实问题的简单情况,涉及的领域更多,逻辑也更多,但这才是问题的本质。

现在我正在为每个地址的字段使用公式,但字段数量很大,我会使用连接来提高其性能。

非常感谢!

最佳答案

有两件事,首先,订单很重要。您需要先创建地址表,然后才能创建个人表,因为个人表的 id_sent_address DEPENDS 来自地址表的 id_address。

其次,要设置外键,目标键也必须是您忘记添加的键。

所以一旦像下面这样修复了两个错误,您应该能够无错地执行它。

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;

关于java - 使用 join into hibernate mapping against main class foreign key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47829252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com