Связь один к одному в hibernate

303
16 сентября 2017, 23:33

У меня есть сущность Account, у нее может быть (а может не быть) одна сущность AccountOrganization. В SQL это выглядит так:

CREATE TABLE IF NOT EXISTS statistics_account (
  id          SERIAL PRIMARY KEY NOT NULL,
  username    VARCHAR(50)        NOT NULL UNIQUE,
  password    VARCHAR(100)       NOT NULL,
  email       VARCHAR(50)        NOT NULL,
  first_name  VARCHAR(50),
  second_name VARCHAR(50),
  created_at  TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS statistics_account_organization (
  account_id      INTEGER REFERENCES statistics_account (id) PRIMARY KEY,
  organization_id UUID               NOT NULL,
  name            VARCHAR(70) UNIQUE NOT NULL,
  created_at      TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW()
);

С помощью Hibernate я пытаюсь это замапить следующим образом:

@Entity
@Table(name = "statistics_account")
@Data
@NoArgsConstructor
public class Account implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    private String username;
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;
    private String email;
    @Column(name = "first_name")
    private String firstName;
    @Column(name = "second_name")
    private String lastName;
    @OneToOne(fetch = FetchType.LAZY, mappedBy = "account")
    private AccountOrganization accountOrganization;
}
@Data
@Entity
@Table(name = "statistics_account_organization")
public class AccountOrganization {
    @Id
    @GeneratedValue
    @JsonIgnore
    @Column(name = "account_id")
    private long accountId;
    @OneToOne(fetch = FetchType.LAZY)
    @PrimaryKeyJoinColumn
    @JsonIgnore
    private Account account;
    private UUID organization_id;
    private String name;
}

Возникает ошибка при маппенге поля private Account account;. Hibernate Не может понять как ему сформировать его. Как мне сделать это правильно ?

Полный текст ошибки:

Caused by: org.hibernate.AnnotationException: Unknown mappedBy in: ru.natalietours.domain.inner.auth.Account.accountOrganization, referenced property unknown: ru.domain.AccountOrganization.account
    at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:147) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1655) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1623) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]
    ... 16 common frames omitted
READ ALSO
Spring Security ошибка при сохранении юзера

Spring Security ошибка при сохранении юзера

Здравствуйте! Подскажи, пожалуйста, у меня мысли плывутИспользую Spring Data, Security

300
@Query с оператором OR

@Query с оператором OR

У меня есть такой метод:

277
Java Jpa One To Many Problems [требует правки]

Java Jpa One To Many Problems [требует правки]

I have problem with extracting dataI have next entities

238
Как поменять родительный падеж в temporals.format(…)?

Как поменять родительный падеж в temporals.format(…)?

Использую Thymeleaf и при выводе месяца, он почему-то выводится в родительном падеже, и я никак не могу понять почему

298