Есть две сущности:
@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;
Цель состоит в том, чтобы вернуть 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
отображения и запроса, однако, похоже, ничего не работает.
Второй вопрос: возможно ли иметь AccountDetails
ссылку на тот же идентификатор, что и Account
. Я хотел бы избавиться от accDetId
и просто сохранить эти сущности с тем же UUID своего родителя.