Я получил эту структуру таблицы, где нам не разрешено изменять, и у меня возникают проблемы с поиском решения для отображения Hibernate.
Таблица A
a1 (pk)
a2
Таблица B
b1 (pk, fk on 'A.a1')
b2 (pk)
b3
Таблица C
c1 (pk, fk on 'B.b1')
c2 (pk, fk on 'B.b2')
c3 (pk)
c4
Таблица D
d1 (pk)
d2 (pk, fk on 'A.a1')
d3 (fk on 'C.c2')
d4 (fk on 'C.c3')
d5
Теперь у меня проблема на уровне столбец d2 таблицы D, который является частью составного ключа, а также частью внешнего ключа таблицы C
В Hibernate я сделал это
@Embeddable
public class TableDId {
private Long d1;
private TableA d2;
@Column(name="d1")
public Long getD1() {
return this.d1;
}
@ManyToOne
@JoinColumn(name="d2")
public Long getD2() {
return this.d2;
}
// Setters
}
@Entity
public class TableD {
private TableDId id;
private TableC tableC;
@EmbeddedId @GeneratedValue(strategy = GenerationType.AUTO)
public TableDId getId() {
return this.id;
}
@ManyToOne
@JoinColumns({
@JoinColumn(name="id.d2", referencedColumnName="c1"),
@JoinColumn(name="d3", referencedColumnName="c2"),
@JoinColumn(name="d4", referencedColumnName="c3")
})
public TableC getTableC() {
return tableC;
}
// Setters
}
Как вы можете догадаться,не работает, я получил ошибку Hibernate при сохранении нового TableD
java.sql.BatchUpdateException: Unknown column 'id.d2' in 'field list'
Может кто-нибудь предложить рабочее решение?
Большое спасибо.