@NamedQuery пытается получить сущность и связанную сущность (отношение @OneToOne) по свойству связанной сущности - PullRequest
0 голосов
/ 18 января 2019

Есть две сущности:

@Entity(name = "Account")
@Table(name = "accounts")
@NamedQuery(name = "findAccountByExtId",
            query = "SELECT a " +
                    "FROM Account a " +
                    "WHERE a.accountDetails.extId = :extId " +
                    "AND a.deletedAt IS NULL")
public class Account extends DeletableAudit {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private UUID id;

    @OneToOne(mappedBy = "parent", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private AccountDetails accountDetails;

и

@Entity(name = "AccountDetails")
@Table(name = "account_details")
public class AccountDetails extends DeletableAudit {
    private static final long serialVersionUID = -1L;

    @Id
    @GeneratedValue
    private Integer accDetId;

    @OneToOne
    @JoinColumn(name = "fk_account")
    private Account parent;

    @Column
    private String extId;
  1. Цель состоит в том, чтобы вернуть Account и AccountDetials через внешний идентификатор. Программа не запустится из-за ошибки: Failed to create query for method public abstract p.j.o.d.d.Account p.j.o.d.r.AccountRepository.findAccountByExtId(java.lang.String)! No property extId found for type Account!

    Уже пробовал различные варианты @OneToOne отображения и запроса, однако, похоже, ничего не работает.

  2. Второй вопрос: возможно ли иметь AccountDetails ссылку на тот же идентификатор, что и Account. Я хотел бы избавиться от accDetId и просто сохранить эти сущности с тем же UUID своего родителя.

...