0

有没有一种简单的方法可以使用休眠将某些字段保存在另一个类和表中。

例如,我有一个Person带有name, surname, email, address1, address2, city,country字段的类。我希望我的课程是:

public class Person
{
   private String name;
   private String surname;
   private String email;
   private Address address;
   // ..
}

public class Address
{
   private Person person; // to whom this belongs
   private String address1;
   private String address2;
   private String city;
   private String country;
   // ..
}

我想将地址存储在另一个表中。实现这一目标的最佳方法是什么?

编辑:我正在使用注释。它不一定是我描述的方式,我正在寻找最佳实践。

编辑2:地址的ID是什么?

PS。如果有办法使地址不可变(用作值对象)那就更好了,或者可能不是因为我从错误的角度思考了一切:)

4

2 回答 2

2
  1. 映射Address为实体并添加主键(自动生成的 id)
  2. Person将和之间的关系映射Addressone-to-one@OneToOne在每个字段上)
于 2010-04-06T14:28:05.200 回答
1

使用 Hibernate 3.5 可以定义外部生成器(又名 JPA 映射),详细信息在此处

应该Person实现Serializable然后将@Id注释添加到person.

@Entity
@AccessType(value = "field")
@Table(name = "addresses")
public class Address
{
   @Id
   @OneToOne
   @JoinColumn(name = "person_id")
   private Person person;
   // ...
}

有一个替代方案,但我真的很喜欢第一个:

@Entity
@AccessType(value = "field")
@Table(name = "addresses")
public class Address
{
   @Id
   private int personId;

   @MapsId
   @OneToOne
   @JoinColumn(name = "person_id")
   private Person person;
   // ...
}
于 2010-04-08T11:52:41.213 回答