Hi friends;
I have tried this for quite some time and things are bouncing over my head. Please help me with this.
where ever i specify one-to-one or one-to-many mapping. Hibernate is generating a update sql statement when i am trying to insert into the database. how to solve this
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="model.Menu" table="menu_level" select-before-update="true">
<id name="levelId" type="integer" unsaved-value="0">
<column name="LEVEL_ID" sql-type="number(10)" not-null="true" />
<generator class="assigned"/>
</id>
<property name="name" type="string">
<column name="NAME" length="6" not-null="true" />
</property>
<property name="datasetId" type="integer">
<column name="DATASET_ID" sql-type="number(10)" not-null="true" />
</property>
<one-to-one name="longName" foreign-key="DISPLAY_NAME_ID" cascade="all" class="model.DisplayName"/>
<bag name="restrictionMap" table="ice_restrictions" cascade="all" where="TYPE_ID=202">
<key >
<column name="ID" />
</key>
<composite-element class="model.IRestrictions">
<property name="restrictionType" type="integer" column="restriction_type"/>
<property name="restriction" type="integer" column="restriction"/>
<property name="typeId" type="integer" column="TYPE_ID"/>
</composite-element>
</bag>
<bag name="rules" table="ice_rule" cascade="all" where="PARENT_TYPE_ID=202">
<key >
<column name="PARENT_LEVEL_ID" />
</key>
<one-to-many class="model.Rule" />
</bag>
</class>
</hibernate-mapping>
here when i try to insert into the Menu I want data to be inserted into tables Display_Name and ice_rule.
but instead I find that Hibernate is trying to update
Below is my test case wher i am trying to invoke the save.
public void testMenuSave() throws MappingException, HibernateException, Exception{
Menu m = new Menu();
m.setDatasetId(1);
m.setDisplayName("test");
m.setExternalId("123456789");
m.setName("RAJTEST");
m.setLevelId(99999999);
m.setActivityStatus(1);
m.setChangeDate(new java.sql.Date(new java.util.Date().getTime()));
m.setChangeUser("raor1");
m.setClassID(30641034);
m.setLockedStatus(0);
m.setBlackBird(0);
m.setBundle(0);
m.setCompleteStatus(1);
m.setGroupId(-1);
m.setIgnoreTypes(0);
m.setSourceId(99999999);
m.setWeb(0);
m.setWebComplaint(1);
IRestrictions ir = new IRestrictions();
List irList = new ArrayList();
ir.setId(new Integer(99999999));
ir.setTypeId(new Integer(202));
ir.setRestriction(new Integer(133));
ir.setRestrictionType(new Integer(21));
irList.add(ir);
ir = new IRestrictions();
ir.setId(new Integer(99999999));
ir.setTypeId(new Integer(202));
ir.setRestriction(new Integer(1));
ir.setRestrictionType(new Integer(29));
irList.add(ir);
ir = new IRestrictions();
ir.setId(new Integer(99999999));
ir.setTypeId(new Integer(202));
ir.setRestriction(new Integer(2));
ir.setRestrictionType(new Integer(29));
irList.add(ir);
m.setRestrictionMap(irList);
List riList = new ArrayList();
RuleItem ri = new RuleItem();
ri.setItemCid(1154);
ri.setItemTypeId(28);
ri.setRuleId(9999);
ri.setRuleTypeId(209);
riList.add(ri);
List rList = new ArrayList();
Rule r = new Rule();
r.setBehaviorId(-1);
r.setIceOnly(0);
r.setParentTypeId(202);
r.setParentCid(99999999);
r.setRuleId(9999);
r.setRuleTypeId(0);
r.setReasonId(0);
r.setRuleItems(riList);
rList.add(r);
riList = new ArrayList();
ri = new RuleItem();
ri.setItemCid(840);
ri.setItemTypeId(28);
ri.setRuleId(9998);
ri.setRuleTypeId(214);
riList.add(ri);
r = new Rule();
r.setBehaviorId(-1);
r.setIceOnly(0);
r.setParentTypeId(202);
r.setParentCid(99999999);
r.setRuleId(9998);
r.setRuleTypeId(4);
r.setReasonId(0);
r.setRuleItems(riList);
rList.add(r);
m.setRules(rList);
dao.save(m);
Menu menu = dao.getById(99999999);
assertEquals(menu.getLevelId(),99999999);
assertEquals(menu.getName(),"RAJTEST");
assertEquals(menu.getDisplayName(),"test");
assertNotNull(menu);
assertNotNull(menu.getRestrictionMap());
Set restrictions = menu.getRestrictions(RestrictionType.TWENTY_ONE);
assertNotNull(restrictions);
assertEquals(1, restrictions.size());
assertTrue(restrictions.contains(Restriction.ONE_HUNDRED_THIRTY_THREE));
restrictions = menu.getRestrictions(RestrictionType.TWENTY_NINE);
assertNotNull(restrictions);
assertEquals(2, restrictions.size());
assertTrue(restrictions.contains(Restriction.ONE));
assertTrue(restrictions.contains(Restriction.TWO));
dao.delete(99999999);
Menu dmenu = dao.getById(99999999);
assertNull(dmenu);
}
Hibernate: select menu0_.LEVEL_ID as LEVEL1_0_, menu0_.NAME as NAME0_0_, menu0_.DATASET_ID as DATASET3_0_0_, menu0_.active_status as active4_0_0_, menu0_.CHNG_DATE as CHNG5_0_0_, menu0_.CHNG_USER as CHNG6_0_0_, menu0_.CLASS_ID as CLASS7_0_0_, menu0_.LOCKED_STATUS as LOCKED8_0_0_, menu0_.BLACKBIRD as BLACKBIRD0_0_, menu0_.COMPLETE_STATUS as COMPLETE10_0_0_, menu0_.SOURCE_ID as SOURCE11_0_0_, menu0_.web as web0_0_, menu0_.WEB_COMPLIANT as WEB13_0_0_, menu0_.BUNDLE as BUNDLE0_0_, menu0_.GROUP_ID as GROUP15_0_0_, menu0_.IGNORE_TYPES as IGNORE16_0_0_, menu0_.EXTERNAL_ID as EXTERNAL17_0_0_ from menu_level menu0_ where menu0_.LEVEL_ID=?
Hibernate: insert into display_name (NAME, DISPLAY_NAME_ID) values (?, ?)
Hibernate: insert into menu_level (NAME, DATASET_ID, active_status, CHNG_DATE, CHNG_USER, CLASS_ID, LOCKED_STATUS, BLACKBIRD, COMPLETE_STATUS, SOURCE_ID, web, WEB_COMPLIANT, BUNDLE, GROUP_ID, IGNORE_TYPES, EXTERNAL_ID, LEVEL_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: update display_name set NAME=? where DISPLAY_NAME_ID=?
Hibernate: update ice_rule set PARENT_LEVEL_ID=?, PARENT_TYPE_ID=?, REASON_ID=?, RULE_TYPE_ID=?, behavior_id=?, ice_only=?, rule_date=? where rule_id=?
Hibernate: update rule_dm set DM_CID=?, CHILD_TYPE_ID=?, rule_type_id=? where rule_id=?
Hibernate: update ice_rule set PARENT_LEVEL_ID=?, PARENT_TYPE_ID=?, REASON_ID=?, RULE_TYPE_ID=?, behavior_id=?, ice_only=?, rule_date=? where rule_id=?
Hibernate: update rule_dm set DM_CID=?, CHILD_TYPE_ID=?, rule_type_id=? where rule_id=?
Hibernate: update rule_dm set RULE_ID=null where RULE_ID=?
Hibernate: insert into ice_restrictions (ID, restriction_type, restriction, TYPE_ID) values (?, ?, ?, ?)
Hibernate: insert into ice_restrictions (ID, restriction_type, restriction, TYPE_ID) values (?, ?, ?, ?)
Hibernate: insert into ice_restrictions (ID, restriction_type, restriction, TYPE_ID) values (?, ?, ?, ?)
Hibernate: update ice_rule set PARENT_LEVEL_ID=? where rule_id=?
as you can find that in case of restrictions it is doing a insert since I have specified a bag with composit id's.
Please help me on this
Regards
Rajeshwar Rao
Need help with Hibernate? Read this first:
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version:
Mapping documents:
Code between sessionFactory.openSession() and session.close():
Full stack trace of any exception that occurs:
Name and version of the database you are using:
The generated SQL (show_sql=true):
Debug level Hibernate log excerpt: