Левый внешний объединяет две сущности в JPA / Hibernate с условием - PullRequest
0 голосов
/ 27 января 2020

У меня есть две сущности JPA, называемые MyTasks и TaskStatus.

MyTasks Entity:

@Entity
@Table(name = "MyTasks", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"id"})
    public class MyTasks {
      @Id
      @Column(name = "id")
      private Integer id;

      @Column(name = "task_name")
      private String task_name;

      @Column(name = "task_data")
      private String task_data;
    }

TaskStatus Entity:

@Entity
@Table(name = "TaskStatus", uniqueConstraints = {
    @UniqueConstraint(columnNames = {"id"})
public class TaskStatus {
  @Id
  @Column(name = "id")
  private Integer id;  //This is foreign key - MyTask(id)

  @Column(name = "task_state")
  @NotNull
  private String task_state;

  @Column(name = "last_attempted")
  private String last_attempted;

Мне нужно получить все строки из MyTasks вместе со статусом, статус которого не существует в таблице TaskStatus или НЕ является «завершенным».

В основном мне нужны результаты следующего запроса через JPA, возможно, с использованием именованного запроса или чего-то подобного. Я хочу избежать использования подготовленных операторов, явно выполняемых с помощью entitymanager.

select id, task_data, state, last_attempted from MyTasks t left outer join TaskStatus ts on t.id = ts.id
where ts.state is NULL or ts.state <> 'resolved';

Как я могу получить это, используя именованный запрос JPA или что-то в этом роде? Я хочу, чтобы результаты автоматически сопоставлялись с классом сущностей. Так что я не хочу выполнять запрос вручную, используя менеджер сущностей и т. Д. c. Пожалуйста, предложите

...