Hibernate автоинкремент ManyToOne слабая сущность
Мне было интересно, что лучший способ autoincrement
мой order rows
в спящем режиме? Начиная с 1 и поднимаясь вверх, это не проблема. Но я хочу, чтобы мой order row id
сбросить при добавлении в новый order
,
Примерно так:
OrderID OrderRowID
1 1
1 2
2 1
2 2
2 3
3 1
3 2
Порядок:
@Entity
@Table(name = "order")
public class Order {
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
OrderRow:
@Entity
@Table(name = "order_row")
public class OrderRow {
@Id
@Column(name = "id")
private Integer id;
@ManyToOne
@JoinColumn(name="album_id")
private Order order;
Слабое сопоставление сущностей работает нормально, но в данный момент я должен установить идентификаторы ордеров вручную.
1 ответ
Решение
По моему мнению, я решил это неправильно: в DAO OrderRow я создал функцию get next id, которая просто выполняет еще один запрос на выборку, например так:
public Integer getNextId(Order o) {
String q = "FROM OrderRow WHERE order_id = :orderId";
Query query = session.createQuery(q);
query.setParameter("orderId", o.getId());
List<OrderRows> orderRows = query.list();
int id = 1;
if (orderRows.size() > 0) {
id = orderRows.get(orderRows.size()-1).getId();
id++;
}
return id;
}
Я надеюсь, что смогу помочь хотя бы кому-то с этим решением.