Как создать запрос гибернации с данными из другого объекта? - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно создать аннотацию Spring @Formula, которая заполняет PROPOSAL.USER_ID идентификатором пользователя {user.getId ()} из объекта User.

@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = userId")
int numberOfProposals;

Не работает, если я использую ...

@Transient
private Long userId;

хотя он имеет свои геттер и сеттер:

public User getUser() {
    return user;
}

public Proposal user(User user) {
    this.user = user;
    return this;
}

public void setUser(User user) {
    this.user = user;
}

public Long getUserId() {
    return this.user.getId();
}

И это не работает, если я использую:

@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = ?#{this.user.id}")

Или:

@Formula("SELECT COUNT(*) FROM PROPOSAL WHERE PROPOSAL.USER_ID = ?#{this.user.getId()}")

Если есть какие-либо документы, которые показывают, как, я был бы признателен.

1 Ответ

0 голосов
/ 03 июля 2018

В принципе это невозможно, поскольку элемент, помеченный вами как @Transient, недоступен на уровне базы данных. А оператор в аннотации @Formula выполняется только на уровне базы данных.

То есть они являются частью разных уровней, и вы не можете использовать друг друга.

Что вы можете сделать, так это создать собственный запрос и передать ему userId для заполнения классов сущностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...