I was wondering whats the best way to autoincrement
my order rows
in hibernate? Starting at 1 and going up isn't a problem. But I want my order row id
to reset when added to a new order
.
Pretty much like this:
OrderID OrderRowID
1 1
1 2
2 1
2 2
2 3
3 1
3 2
Order:
@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;
The weak entity mapping works fine but I have to set order id's manually at the moment.
I solved it in a bad way in my opinion: I created a get next id function in my OrderRow DAO which just does another select request like this:
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;
}
I hope I can help atleast someone with this solution.