These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 
Author Message
 Post subject: Mapping is generating update statement
PostPosted: Thu Aug 18, 2005 9:40 am 
Newbie

Joined: Tue Aug 02, 2005 1:40 pm
Posts: 16
Location: US
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:


Top
 Profile  
 
 Post subject:
PostPosted: Fri Aug 19, 2005 1:18 pm 
Newbie

Joined: Tue Aug 02, 2005 1:40 pm
Posts: 16
Location: US
for the child set

<class name="model.Rule" table="ice_rule" >
<id
column="rule_id"
type="integer"
name="ruleId" unsaved-value="any">

unsaved value to any and the thing works :-D


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.