【发布时间】:2015-01-01 07:36:46
【问题描述】:
我正在使用 Hibernate 作为 JPA 提供程序的 JPA 示例应用程序。 其中我有一个与 EAGER 获取类型的一对一映射。
下面是我的代码块:
Person.java
public class Person extends Persistent implements Serializable {
private static final long serialVersionUID = 1L;
String name;
// address as composition
Address address;
String addressId;
地址.java
public class Address extends Persistent implements Serializable {
private static final long serialVersionUID = 1L;
String address;
映射.xml
<entity name="Person" class="com.csam.mtp.wallet.wallet.Person"
access="FIELD">
<table name="person" />
<attributes>
<basic name="name">
<column name="name" length="36" nullable="false" />
</basic>
<basic name="addressid">
<column name="addressid" length="36"/>
</basic>
<one-to-one name="address" fetch="EAGER">
<join-column name="addressid"
referenced-column-name="id" insertable="false" updatable="false"
nullable="false" />
</one-to-one>
</attributes>
</entity>
<entity name="address" class="com.csam.mtp.wallet.wallet.Address"
access="FIELD">
<table name="address" />
<attributes>
<basic name="address">
<column name="address" length="36" />
</basic>
</attributes>
</entity>
数据库脚本
CREATE TABLE address (
id VARCHAR (50) not null,
address VARCHAR(50),
primary key(id)
);
CREATE TABLE person (
id VARCHAR (50) not null,
name VARCHAR(50),
addressid VARCHAR(50),
primary key(id),
foreign key (addressid) REFERENCES address(id),
);
驱动类
Address address = new Address();
address.setAddress("test");
address = addressRepository.save(address);
Person person = new Person("Mike");
//person.setAddressId(address.id());
try {
person = personRepository.save(person);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(personRepository.exists(person.getID()));
Person savedPerson = personRepository.findOne(person.getID());
// Asserts
assertNotNull(savedPerson);
assertNotNull(savedPerson.id());
救人时如果我不设置地址id则救人成功,存在返回true,但找到一个api总是返回null
在保存人时,如果我先保存地址并亲自设置地址ID,然后再保存 它成功保存了人,存在返回true并找到一个api返回带有地址对象的Person对象(因为它很渴望)
所以下面是我的查询,
在一对一映射的情况下,是否需要在子节点上进行预取,子节点必须在保存父节点之前保存并设置在父节点中?
我试图找出相关的arcicle,但没有得到,请协助。
提前致谢
【问题讨论】:
标签: spring hibernate jpa orm spring-data-jpa