У меня есть ситуация, когда у меня есть класс Called Order со сгенерированным OrderID:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_gen")
@SequenceGenerator(name = "seq_gen", sequenceName = "OID_SEQ1")
@Column(name = "ORDER_ID",nullable = false)
public long getOrderId()
{
return this.OrderId;
}
он также имеет сопоставление «один ко многим» с классом/таблицей, называемой элементами:
@OneToMany(fetch = FetchType.LAZY,mappedBy = "orders",targetEntity = Items.class)
public Set<Items> getItems()
{
return this.items;
}
внутри класса элементов есть встроенный/составной идентификатор:
@EmbeddedId
@AttributeOverrides({@AttributeOverride(name = "OrderId",column = @Column(name = "ORDER_ID",nullable = false)),
@AttributeOverride(name = "role",column = @Column(name = "ROLE",nullable = false,length = 10))})
public ItemId getId()
{
return this.id;
}
Моя проблема заключается в том, что часть этого идентификатора является первичным ключом родительского класса Order.class. Другими словами, значение последовательности. Это означает, что я не могу установить это значение где угодно, и когда я звоню:
entitymanager.persist(order);
Родительский объект Order записывает в базу данных, НО ни один из элементов в наборе не сохраняется. Существует только один оператор вставки, и все ссылки на orderId в объектах Items равны нулю????
Как я могу заполнить эти идентификаторы сгенерированным идентификатором Seq?
Большое спасибо за любую помощь в этом!