| value was already associated with the session: d1e22501fbd4255600fbd42559d30001, of class: test.Stock
 Ok let me set the scene here, I have some simple session logic which checks to see if a session object has been created before. If it has not, an Order Object is created and an associated order item. If the session object has already been created, then further order items are created:
 
 InsertOrder insertorder = new InsertOrder();
 
 //1.Determine if an order has been created
 Order newOrder = (Order)session.getAttribute("ORDER");
 
 if (newOrder == null){
 newOrder = new Order();
 }
 
 //2.check that stock exists
 Stock newStk = InsertOrder.checkStock("d1e22501fbd4255600fbd42559d30001");
 
 //3.Add stock item
 newOrder.addProduct(newStk,1,32);
 
 //4.Update Session object
 session.setAttribute("ORDER", newOrder);
 
 //5.Save stock item
 //insertorder.newOrder(newOrder);
 
 The problem I am having comes when I uncomment point 5, to insert the new order to the table. So effectively, as this is a test page, what I am doing is refreshing the page a few times to create an order and then some order items. i then uncomment point 5 and refresh the page again, at this point the error is generated. The debug code I am getting is:
 
 04:33:23,379 DEBUG SessionImpl:528 - opened session
 04:33:23,381 DEBUG JDBCTransaction:37 - begin
 04:33:23,383 DEBUG JDBCTransaction:41 - current autocommit status:false
 04:33:23,385 DEBUG SessionImpl:786 - saving [test.Order#d1e22501fbea3a9d00fbec39d139000e]
 04:33:23,387 DEBUG Cascades:497 - processing cascades for: test.Order
 04:33:23,389 DEBUG Cascades:506 - done processing cascades for: test.Order
 04:33:23,391 DEBUG Cascades:497 - processing cascades for: test.Order
 04:33:23,393 DEBUG Cascades:524 - cascading to collection: test.Order.OrderItems
 04:33:23,394 DEBUG Cascades:113 - cascading to saveOrUpdate()
 04:33:23,396 DEBUG SessionImpl:1321 - saveOrUpdate() unsaved instance
 04:33:23,398 DEBUG SessionImpl:786 - saving [test.OrderItem#d1e22501fbea3a9d00fbec39d146000f]
 04:33:23,400 DEBUG Cascades:497 - processing cascades for: test.OrderItem
 04:33:23,402 DEBUG Cascades:113 - cascading to saveOrUpdate()
 04:33:23,404 DEBUG Cascades:341 - id unsaved-value strategy NULL
 04:33:23,406 DEBUG SessionImpl:1326 - saveOrUpdate() previously saved instance with id: d1e22501fbd4255600fbd42559d30001
 04:33:23,408 DEBUG SessionImpl:1374 - updating [test.Stock#d1e22501fbd4255600fbd42559d30001]
 04:33:23,410 DEBUG Cascades:497 - processing cascades for: test.Stock
 04:33:23,412 DEBUG Cascades:506 - done processing cascades for: test.Stock
 04:33:23,414 DEBUG Cascades:506 - done processing cascades for: test.OrderItem
 04:33:23,416 DEBUG Cascades:497 - processing cascades for: test.OrderItem
 04:33:23,417 DEBUG Cascades:506 - done processing cascades for: test.OrderItem
 04:33:23,419 DEBUG Cascades:113 - cascading to saveOrUpdate()
 04:33:23,421 DEBUG SessionImpl:1321 - saveOrUpdate() unsaved instance
 04:33:23,429 DEBUG SessionImpl:786 - saving [test.OrderItem#d1e22501fbea3a9d00fbec39d1650010]
 04:33:23,431 DEBUG Cascades:497 - processing cascades for: test.OrderItem
 04:33:23,433 DEBUG Cascades:113 - cascading to saveOrUpdate()
 04:33:23,435 DEBUG Cascades:341 - id unsaved-value strategy NULL
 04:33:23,437 DEBUG SessionImpl:1326 - saveOrUpdate() previously saved instance with id: d1e22501fbd4255600fbd42559d30001
 04:33:23,441 DEBUG SessionImpl:1374 - updating [test.Stock#d1e22501fbd4255600fbd42559d30001]
 
 My Stock map is:
 
 <class name="Stock" table="stocktbl">
 <id name="ID" column="stock_id" type="string" unsaved-value="null">
 <generator class="uuid.hex"/>
 </id>
 <property name="ArtistID" column="artist_id" type="integer" not-null="true"/>
 <property name="ItemType" column="item_type" type="string" not-null="true"/>
 <property name="ItemTitle" column="item_title" type="string"/>
 <property name="ItemDemo" column="item_demo_location" type="string"/>
 <property name="ItemFinal" column="item_final_location" type="string"/>
 <property name="UnitCost" column="unit_cost" type="double"/>
 <property name="ItemSelected" column="item_selected" type="boolean"/>
 <property name="ItemPurchaseAmount" column="item_purchase_amount" type="integer"/>
 
 <one-to-one name="StockImages" outer-join="false" class="StockImages" cascade="delete"/>
 </class>
 
 My Order map is:
 
 <class name="Order" table="orderstbl">
 <id name="ID" column="order_id" type="string" unsaved-value="null">
 <generator class="uuid.hex"/>
 </id>
 <property name="OrderDate" column="order_date" type="timestamp" not-null="true"/>
 <property name="PriceTotal" column="price_total" type="double" not-null="true"/>
 <property name="UserID" column="user_id" type="integer" not-null="true"/>
 <set name="OrderItems" table="orderitemstbl" inverse="true" cascade="all">
 <key column="order_id"/>
 <one-to-many class="OrderItem"/>
 </set>
 </class>
 
 My Order Item map is:
 
 <class name="OrderItem" table="orderitemstbl">
 <id name="ID" column="orderitem_id" type="string" unsaved-value="null">
 <generator class="uuid.hex"/>
 </id>
 <property name="OrderID" column="order_id" type="string" not-null="true" insert="false" update="false"/>
 <property name="StockID" column="stock_id" type="string" not-null="true" insert="false" update="false"/>
 <property name="Amount" column="amount" type="integer"/>
 <property name="Price" column="price" type="double"/>
 <many-to-one name="Order" class="Order" column="order_id" />
 <many-to-one name="Stock" class="Stock" cascade="save-update" column="stock_id"/>
 </class>
 
 As a point, if I have the following code:
 
 InsertOrder insertorder = new InsertOrder();
 newOrder = new Order();
 
 Stock newStk = InsertOrder.checkStock("d1e22501fbd4255600fbd42559d30001");
 
 newOrder.addProduct(newStk,1,32);
 newOrder.addProduct(newStk,1,32);
 newOrder.addProduct(newStk,1,32);
 newOrder.addProduct(newStk,1,32);
 
 insertorder.newOrder(newOrder);
 
 it works fine. One order is created with 4 order items. what am I doing wrong??
 
 Peter
 
 
 |