Я сопоставляю представление sql классу сущности с аннотацией hibernate @Subselect
.По сути, это выглядит примерно так:
@Subselect(
"SELECT table1.*, table2.id as tid FROM "
+ "table1 INNER JOIN table2 on table2.field = table1.field"
)
@Entity
@Immutable
class Entity {
// fields
}
Когда соединение работает, я могу получить что-то вроде следующего:
========================================
| table1.id | table1.field | table2.id |
========================================
| 1 | 1 | 1 |
========================================
| 1 | 1 | 2 |
========================================
Таким образом, несколько записей в таблице2 могут объединиться в одну строку в таблице1.Это нормально, однако в java Entity я хочу отобразить его как отношение один ко многим (один объект ко многим объектам table2), вот что я написал, что сработало для других типов отношений:
@Subselect(
"SELECT table1.*, table2.id as tid FROM "
+ "table1 INNER JOIN table2 on table2.field = table1.field"
)
@Entity
@Immutable
class Entity {
@OneToMany
@JoinColumn(name = "tid", updatable = false, insertable = false)
private Set<Table2Entity> elements = new HashSet<>();
}
Однаконабор в сущности всегда пуст, почему это так?Вышеупомянутый подход работает для отношений один к одному и много к одному.