Я хочу создать DAO, который представляет собой объединение двух таблиц с Java Hibernate.Вот SQL, который я хотел бы представить (в случае Postgres 9.6 это важно):
SELECT tableOneValue, tableTwoValue
FROM table_one, table_two
WHERE table_one_filter = 2 AND table_one_id = table_two_id;
Эти таблицы имеют отношение OneToOne.
Table1.java
@Entity
@Data
@Table(name="table_one")
public class TableOneDao implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "table_one_id")
private int tableOneId;
@Column(name = "table_one_value")
private String tableOneValue;
@Column(name = "table_one_filter")
private int tableOneFilter;
}
Table2.java
@Entity
@Data
@Table(name="table_two")
public class TableTwoDao implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "table_twp_id")
private int tableTwpId;
@Column(name = "table_two_value")
private String tableTwoValue;
}
Я очень плохо знаком с гибернацией, поэтому, возможно, это неправильный способ думать с ним.Я хотел бы определить класс SomeDao, в котором я могу сделать: daoManager.findAll(SomeDao.class, Pair.of("tableOneFilter", 2));
Это вернет List<SomeDao>
, где мы получим все строки, которые удовлетворяют tableOneFilter == 2.