gpt4 book ai didi

java - 未设置 Hibernate 1 对 1 映射列

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:06 25 4
gpt4 key购买 nike

我有 2 张 table :

create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
address INT NOT NULL,
PRIMARY KEY (id)
);

create table ADDRESS (
id INT NOT NULL auto_increment,
street_name VARCHAR(40) default NULL,
city_name VARCHAR(40) default NULL,
state_name VARCHAR(40) default NULL,
zipcode VARCHAR(10) default NULL,
PRIMARY KEY (id)
);

其中 EMPLOYEE.address 是映射到 ADDRESS 的外键

我的映射文件定义如下:

<hibernate-mapping>
<class name="Employee" table="EMPLOYEE">
<meta attribute="class-description">
This class contains the employee detail.
</meta>
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="firstName" column="first_name" type="string"/>
<property name="lastName" column="last_name" type="string"/>
<property name="salary" column="salary" type="int"/>
<many-to-one name="address" column="address" unique="true"
class="Address" not-null="true"/>
</class>

<class name="Address" table="ADDRESS">
<meta attribute="class-description">
This class contains the address detail.
</meta>
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<property name="street" column="street_name" type="string"/>
<property name="city" column="city_name" type="string"/>
<property name="state" column="state_name" type="string"/>
<property name="zipcode" column="zipcode" type="string"/>
</class>

</hibernate-mapping>

但是,当我拉取 Employee 对象时,所有普通字段都会正常填充,除了 Employee 普通旧对象中的 Address 字段的所有值都设置为 null。可能是什么原因造成的?

最佳答案

遗憾的是评论有点长,但希望这能给您一些引用:

据我了解,NHibernate 实际上是“默认情况下惰性的”,这意味着 Address 对象在请求之前不会被填充,然后(如果我没记错的话)仅当您仍然连接时才填充。我过去在将部分加载的对象传递到我的 MVC 项目中的 view 时遇到过问题,您的项目听起来很相似。

话虽这么说,我读过几篇文章,NHibernate 不会对多对一 关系进行延迟加载,但我仍然认为这可能值得研究。 多对一关系需要使用外键,因此引用列必须是主键。 IE。 EMPLOYEE.address = ADDRESS.id

解决问题后,请发布实际错误的内容,因为我希望提高我在 NHibernate 方面的知识。

您可能会发现以下文章有用:

还有这些问题:

关于java - 未设置 Hibernate 1 对 1 映射列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24920846/

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