Java Hibernate:将单个表的属性分组到一个子类中

Java Hibernate:将单个表的属性分组到一个子类中,java,hibernate,relational-database,Java,Hibernate,Relational Database,我想做: create table user ( id bigint primary key auto_increment, firstname varchar(128), lastname varchar(128), street varchar(128), zipcode mediumint, city varchar(128) ) 然后: @Entity public class User { @Id @Generated

我想做:

create table user (
    id bigint primary key auto_increment,
    firstname varchar(128),
    lastname varchar(128),
    street varchar(128),
    zipcode mediumint,
    city varchar(128)
)
然后:

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String firstname;

    private String lastname;

    private Address address; // Here I want an Address rather than street, zip, and city directly inside User

    ...

} 
以及:

(这是一个例子)


用Hibernate怎么做@奥涅?问题似乎很简单,因为我在这里找不到解决方案,所以它一定很明显。

您可以使用@OneToOne注释通过一对一的关系关联实体

  @Entity
  public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private Address address; 

    @OneToOne(cascade = CascadeType.ALL)
    @PrimaryKeyJoinColumn
    public Address getAddress()
    {
     return address;
    }
  } 
参考:

首先,用
@embeddeble
注释您的
地址
类:

@Embeddable
public class Address {
    /*class definition here*/
    ...
}
然后以以下方式更新用户类:

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String firstname;

    private String lastname;

    @Embedded
    private Address address; 

    ...

} 

就这样。如果您想要更复杂的示例,请查看。只需注意模型类定义,只要使用JPA处理数据库,使用Spring Boot与不使用Spring Boot都没有区别。

看看可嵌入类型:谢谢,它看起来很棒。我会接受它,当我可以测试它,因为一些工作需要做之前。
@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String firstname;

    private String lastname;

    @Embedded
    private Address address; 

    ...

}