Я использую Hibernate 4 (с Spring), чтобы сохранить свой объект в базе данных. У меня есть проблема, когда я пытаюсь сохранить родителя с дочерней коллекцией.
Моя таблица:
| A | => PK (Composite) [String + Integer]
| B | => PK (Composite) [Stirng + Integer] + Integer
Естественно, ПК B является составным с теми же ПК A, и A содержит набор B.
В моем коде я хочу:
A parent = new A();
parent.addCollection(new B());
parentDao.create(parent)
Когда Hibernate сохраняет объект, он может установить String в A PK и вычислить max + 1 для Inter. Точно так же для B PK Hibernate устанавливает то же значение PK из A (родительский => дочерний) и вычисляет max + 1 для второго Intenger.
Это возможно? заранее спасибо
ИЗМЕНИТЬ
Мои занятия:
Class A {
static Class A_PK {
private String codAzienda;
private Integer year;
... Get, Set, HashCode, Equals and toString() ...
}
private A_PK id;
... another columns ...
@OneToMany(cascade=ALL)
@JoinColumns({
@JoinColumn(name="cod_azienda"),
@JoinColumn(name="year")
})
List<B> children;
}
Class B {
static Class B_PK {
private String codAzienda;
private Integer year;
private Integer nextId;
... Get, Set, HashCode, Equals and toString() ...
}
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "codAzienda", column = @Column(name = "cod_azienda")),
@AttributeOverride(name = "codCliente", column = @Column(name = "cod_cliente"))
})
private B_PK id;
... another columns ...
}