当前位置: 首页 > 知识库问答 >
问题:

Hibernate-一个表中的三个实体

宫子晋
2023-03-14

我在实体类中设置一些hibernate注释时遇到问题。

我的问题是:我如何告诉Hibernate,它应该在一个表中存储地址、名称和客户信息。此表应包含以下列:ID、给定、姓氏、街道、门牌号、邮政编码、城市、电话、评论。目前,Hibernate在mysql数据库中为每个实体生成一个表。因此,有必要在每个实体类(客户、名称、地址)中定义@Id。但我想用一个@Id为客户保留一张表中的所有信息。

我怎样才能解决这个问题?

下面是客户、名称和地址实体类的摘录:

@Entity
@Table(name = "customer")
@XmlRootElement
public class Customer {
    @Id
    @GeneratedValue
    private int id;
    @OneToOne
    private Name name;
    @OneToOne
    private Address address;
    private String phone;
    private String comment;
    public Customer() { }
}

@Entity
@XmlRootElement
public class Name {
    private String given;
    private String surname;
    public Name() { }
}

@Entity
@XmlRootElement
public class Address {
    private String street;
    private String houseNumber;
    private String zip;
    private String city;
    public Address() { }
}

共有1个答案

齐文林
2023-03-14

只有客户应该用@实体注释。其他类不是实体,只是客户实体的一小部分。因此,它们应该用@Embeddeble注释。

@Entity
@Table(name = "customer")
public class Customer {
    @Id
    @GeneratedValue
    private int id;
    @Embedded
    private Name name;
    @Embedded
    private Address address;
    private String phone;
    private String comment;
    public Customer() { }
}

@Entity
public class Name {
    private String given;
    private String surname;
    public Name() { }
}

@Embeddable
public class Address {
    private String street;
    private String houseNumber;
    private String zip;
    private String city;
    public Address() { };
}
 类似资料:
  • 首先,我已经阅读了Hibernate——一个包含多个实体的表?。 然而,我希望将两个实体映射到同一个表,但我希望它们都是实体,我可以从中选择。我的意思是: 一个表:人(id、姓名、出生日期、城市、街道、邮政编码)。 两个实体:人(id、name、dateOfBirth)、地址(id、城市、街道、邮政编码)。 实体之间是1:1的关系,但数据库中仍然是1个表。 如果我在上面的链接中使用建议的解决方案(

  • 问题内容: 我有一个实体- 。由描述。 Hibernate为每个实体创建一个表,因此当我调用时,我的数据总是保存到该表中。 现在,我需要另一个表来存储相同类型的数据,并且只需要将我的实体保存到该表中。 数据结构 (类似这样): 使用这个 : 和结果,我应该在和 中。 由于系统限制,我无法将这两个对象放在一个表中。(即使创建额外的字段也是个坏主意)。 我可以不进行子类化吗?使用Programmati

  • Hibernate为每个实体创建一个表,因此当我调用时,我的数据总是保存到这个表中。 现在,我需要另一个表来存储相同类型的数据,并且我只需要将我的实体保存到该表中。 数据结构(类似于以下内容): 由于系统的限制,我不能将这两个对象放在一个表中。(即使创建额外字段也是坏主意)。 我可以在不进行子类化的情况下这样做吗?使用programmaticaly hibernate配置?

  • 问题内容: 我正在尝试使用Hibernate的@Formula批注从另一个表中检索实体。给出以下代码: Result类如下所示: 但是,在尝试加载测试实体时,出现错误“找不到列“ TEST0_.RESULTDATE””。我还尝试了其他一些涉及@JoinFormula批注的事情,但是没有成功。我也遇到了这个答案,这似乎表明我在做的事情应该起作用,但事实并非如此。我该如何工作? 问题答案: 因此,我找

  • 我有两张桌子。括号中的属性名和列名。 表Animal有字段:animalId(animalId)、name(name)、owner(owner_id)owner与owner对象和owner_id列是多对一关系 表所有者有字段:ownerId(owner_id),name 我想选择一个ID为5的动物的主人。冬眠怎么能做到呢?