Hibernate: для одной таблицы атрибутов группы в подкласс - PullRequest
0 голосов
/ 04 января 2019

Я хочу сделать:

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

    ...

} 

и:

public class Address {

    private String street;

    private Integer zipcode;

    private String city;

    ...

}

(это пример)

Как это сделать с Hibernate? @Один к одному ? Проблема кажется простой, и поскольку я не могу найти решение здесь, оно должно быть очевидным.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Во-первых, аннотируйте свой Address класс с помощью @Embeddable:

@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; 

    ...

} 

Вот и все. Если вы хотите более сложный пример, посмотрите здесь . Просто обратите внимание на определение классов моделей, не имеет значения, используете ли вы Spring Boot или нет, если вы обрабатываете свою базу данных с помощью JPA.

0 голосов
/ 04 января 2019

Вы можете связать сущности посредством отношения один-к-одному, используя аннотацию @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;
    }
  } 

Ссылка: https://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#entity-mapping-association

...