Hibernate autoincrement ManyToOne弱实体

时间:2017-06-06 16:46:20

标签: hibernate key weak-entity

我想知道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;

弱实体映射工作正常,但我必须手动设置订单ID。

1 个答案:

答案 0 :(得分:0)

在我看来,我以一种糟糕的方式解决了这个问题:我在我的OrderRow DAO中创建了一个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;
}

我希望我能帮助解决这个问题的人。