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;
}

Я надеюсь, что смогу помочь хотя бы кому-то с этим решением.

Другие вопросы по тегам