Как мне написать JPA-код для создания JOIN нескольких таблиц? - PullRequest
0 голосов
/ 08 марта 2019

Во-первых, я сожалею об этом вопросе, потому что я не знаю, какое ключевое слово использовать для поиска ответа. Спасибо, вы понимаете!

  1. У меня есть первая таблица slave_table, сущность, подобная этой:
@Entity
@Data
@Table(name = "slave_table", uniqueConstraints = {@UniqueConstraint(columnNames = "name")})
public class SlaveEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @NotNull(groups = Update.class)
    private Long id;

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

    @Column(name = "tag")
    private String tag = "default";

    @Column(name = "idle")
    private Boolean idle;
}
  1. И у меня есть вторая таблица task_table, сущность, подобная этой:
@Entity
@Data
@Table(name = "task_table")
public class TaskEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @NotNull(groups = Update.class)
    private Long id;

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

    @NotNull
    @Column(name = "qps")
    private Long qps;

    @Column(name = "status")
    private Integer status;

    @ManyToOne
    private JobEntity job;

    @OneToOne
    private SlaveEntity slave;
  1. У меня есть третья таблица job_table, сущность, подобная этой:
@Entity
@Data
@Table(name = "job_table")
public class JobEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @NotNull(groups = Update.class)
    private Long id;

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

    @Column(name = "status")
    private Integer status = 0;

    @OneToMany
    private Set<SlaveEntity> slaves;

    @JsonIgnore
    @OneToMany
    private Set<TaskEntity> tasks;
}

Они создадут job, job_slave_tables, job_task_tables и task_table MySQL таблиц.

В одно задание входит хотя бы одно задание, а в одном задании используется только один ведомый.

Вопрос:

  1. Я не хочу task_table таблицы, но мне нужно использовать сущность. Как?

  2. Когда я создаю одно задание, я не хочу создавать таблицы job_slave_tables и job_task_tables, но хочу создать одну таблицу job_task_tables, она включает все столбцы TaskEntity в соответствии с slave имя, потому что одно задание включает в себя хотя бы одно задание, одно задание запускает только одно ведомое устройство. Как?

Большое спасибо !!!

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