2013-03-04 166 views
6

在插入過程中在Hibernate查詢我傳遞一些領域我已經映射到相應的表的表類對象,查詢工作正常,但該查詢變得太大,因爲這些映射的對象都得到更新單獨到相應的表格。休眠插入查詢

誰能告訴我這是否是正確的插入方式也就是爲什麼我得到這些更新查詢。

Hibernate: insert into ortms.tool_modified_his_tbl (tool_desc, old_tool_desc, connec1, old_connec1, connec2, old_connec2, landed_cost, old_landed_cost, acqui_date, old_acqui_date, manuf_date, old_manuf_date, price_ref, old_price_ref, op_rate_cost, old_op_rate_cost, stb_rate_cost, old_stb_rate_cost, day_rate1_cost, old_day_rate1_cost, day_rate2_cost, old_day_rate2_cost, packermilling_cost, old_packermilling_cost, sale_value, old_sale_value, status, created_date, modified_date, tool_id, tool_modi_reas_id, tool_modi_usr_id, supplier_id, old_supplier_id, tc_status_id, old_tc_status_id, pricing_type_id, old_pricing_type_id, old_ownership_id, ownership_id, unit_id, old_unit_id, branch_id, old_branch_id, reta_tool_choice_id, old_reta_tool_choice_id, non_ser_tol_cho_id, old_non_ser_tol_cho_id, charge_by_id, old_charge_by_id, size_range_id, old_size_range_id, rack_id, old_rack_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
Hibernate: update ortms.master2_tool_master set tool_id=?, tool_desc=?, connec1=?, connec2=?, landed_cost=?, acqui_date=?, manuf_date=?, price_ref=?, op_rate_cost=?, stb_rate_cost=?, day_rate1_cost=?, day_rate2_cost=?, packermilling_cost=?, sale_value=?, uploaded_filename=?, uploaded_file=?, status=?, created_date=?, modified_date=?, supplier_id=?, tc_status_id=?, pricing_type_id=?, unit_id=?, reta_tool_choice_id=?, non_ser_tol_cho_id=?, branch_id=?, charge_by_id=?, size_range_id=?, rack_id=?, ownership_id=? where id=? 
Hibernate: update ortms.table_users set user_code=?, username=?, password=?, first_name=?, last_name=?, status=?, created_date=?, modified_date=?, dept_id=?, branch_id=? where id=? 
Hibernate: update ortms.table_choice_select set choice_name=?, status=?, created_date=?, modified_date=? where id=? 
Hibernate: update ortms.master2_toolmast_chargeby set chargeby=?, status=?, created_date=?, modified_date=? where id=? 
Hibernate: update ortms.master2_sizerange set size_code=?, size_range=?, status=?, created_date=?, modified_date=?, grp_lev3_id=? where id=? 
Hibernate: update ortms.master2_group_level3 set grp_lev3_name=?, grp_lev3_desc=?, created_date=?, modified_date=?, status=?, grp_lev2_id=? where id=? 
Hibernate: update ortms.master2_group_level2 set grp_lev2_name=?, grp_lev2_desc=?, created_date=?, modified_date=?, status=?, grp_lev1_id=? where id=? 
After calling action: master2.toolmaster.ToolMaster Time taken: 1234 ms 

更新用2

ToolModifiedHisTbl.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Mar 2, 2013 9:29:05 PM by Hibernate Tools 3.2.1.GA --> 
<hibernate-mapping> 
    <class name="mappingfiles.ToolModifiedHisTbl" table="tool_modified_his_tbl" catalog="ortms"> 
     <id name="id" type="java.lang.Integer"> 
      <column name="id" /> 
      <generator class="identity" /> 
     </id> 


     <property name="toolDesc" type="string"> 
      <column name="tool_desc" length="65535" /> 
     </property> 
     <property name="oldToolDesc" type="string"> 
      <column name="old_tool_desc" length="65535" /> 
     </property> 
     <property name="connec1" type="string"> 
      <column name="connec1" length="60" /> 
     </property> 
     <property name="oldConnec1" type="string"> 
      <column name="old_connec1" length="60" /> 
     </property> 
     <property name="connec2" type="string"> 
      <column name="connec2" length="60" /> 
     </property> 
     <property name="oldConnec2" type="string"> 
      <column name="old_connec2" length="60" /> 
     </property> 


     <property name="landedCost" type="string"> 
      <column name="landed_cost" length="20" /> 
     </property> 
     <property name="oldLandedCost" type="string"> 
      <column name="old_landed_cost" length="20" /> 
     </property> 
     <property name="acquiDate" type="date"> 
      <column name="acqui_date" length="10" /> 
     </property> 
     <property name="oldAcquiDate" type="date"> 
      <column name="old_acqui_date" length="10" /> 
     </property> 
     <property name="manufDate" type="date"> 
      <column name="manuf_date" length="10" /> 
     </property> 
     <property name="oldManufDate" type="date"> 
      <column name="old_manuf_date" length="10" /> 
     </property> 


     <property name="priceRef" type="string"> 
      <column name="price_ref" length="20" /> 
     </property> 
     <property name="oldPriceRef" type="string"> 
      <column name="old_price_ref" length="20" /> 
     </property> 
     <property name="opRateCost" type="string"> 
      <column name="op_rate_cost" length="20" /> 
     </property> 
     <property name="oldOpRateCost" type="string"> 
      <column name="old_op_rate_cost" length="20" /> 
     </property> 
     <property name="stbRateCost" type="string"> 
      <column name="stb_rate_cost" length="20" /> 
     </property> 
     <property name="oldStbRateCost" type="string"> 
      <column name="old_stb_rate_cost" length="20" /> 
     </property> 
     <property name="dayRate1Cost" type="string"> 
      <column name="day_rate1_cost" length="20" /> 
     </property> 
     <property name="oldDayRate1Cost" type="string"> 
      <column name="old_day_rate1_cost" length="20" /> 
     </property> 
     <property name="dayRate2Cost" type="string"> 
      <column name="day_rate2_cost" length="20" /> 
     </property> 
     <property name="oldDayRate2Cost" type="string"> 
      <column name="old_day_rate2_cost" length="20" /> 
     </property> 
     <property name="packermillingCost" type="string"> 
      <column name="packermilling_cost" length="20" /> 
     </property> 
     <property name="oldPackermillingCost" type="string"> 
      <column name="old_packermilling_cost" length="20" /> 
     </property> 
     <property name="saleValue" type="string"> 
      <column name="sale_value" length="20" /> 
     </property> 
     <property name="oldSaleValue" type="string"> 
      <column name="old_sale_value" length="20" /> 
     </property> 

     <property name="status" type="string"> 
      <column name="status" length="20" /> 
     </property> 
     <property name="createdDate" type="timestamp"> 
      <column name="created_date" length="19" /> 
     </property> 
     <property name="modifiedDate" type="timestamp"> 
      <column name="modified_date" length="19" /> 
     </property> 






     <many-to-one class="mappingfiles.Master2ToolMaster" unique="true" name="toolId" column="tool_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableModifiedReason" unique="true" name="toolModiReasId" column="tool_modi_reas_id" cascade="all" /> 

     <many-to-one class="mappingfiles.TableUsers" unique="true" name="toolModiUsrId" column="tool_modi_usr_id" cascade="all" /> 


     <many-to-one class="mappingfiles.TableSupplier" unique="true" name="supplierId" column="supplier_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableSupplier" unique="true" name="oldSupplierId" column="old_supplier_id" cascade="all" /> 


     <many-to-one class="mappingfiles.TableToolContractStatus" unique="true" name="tcStatusId" column="tc_status_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableToolContractStatus" unique="true" name="oldTcStatusId" column="old_tc_status_id" cascade="all" /> 


     <many-to-one class="mappingfiles.Master2PriceType" unique="true" name="pricingTypeId" column="pricing_type_id" cascade="all" /> 
     <many-to-one class="mappingfiles.Master2PriceType" unique="true" name="oldPricingTypeId" column="old_pricing_type_id" cascade="all" /> 


     <many-to-one class="mappingfiles.TableOwnership" unique="true" name="oldOwnershipId" column="old_ownership_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableOwnership" unique="true" name="ownershipId" column="ownership_id" cascade="all" /> 


     <many-to-one class="mappingfiles.Master2UnitMaster" unique="true" name="unitId" column="unit_id" cascade="all" /> 
     <many-to-one class="mappingfiles.Master2UnitMaster" unique="true" name="oldUnitId" column="old_unit_id" cascade="all" /> 


     <many-to-one class="mappingfiles.TableBranchesCompany" unique="true" name="branchId" column="branch_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableBranchesCompany" unique="true" name="oldBranchId" column="old_branch_id" cascade="all" /> 


     <many-to-one class="mappingfiles.TableChoiceSelect" unique="true" name="retaToolChoiceId" column="reta_tool_choice_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableChoiceSelect" unique="true" name="oldRetaToolChoiceId" column="old_reta_tool_choice_id" cascade="all" /> 


     <many-to-one class="mappingfiles.TableChoiceSelect" unique="true" name="nonSerTolChoId" column="non_ser_tol_cho_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableChoiceSelect" unique="true" name="oldNonSerTolChoId" column="old_non_ser_tol_cho_id" cascade="all" /> 


     <many-to-one class="mappingfiles.Master2ToolmastChargeby" unique="true" name="chargeById" column="charge_by_id" cascade="all" /> 
     <many-to-one class="mappingfiles.Master2ToolmastChargeby" unique="true" name="oldChargeById" column="old_charge_by_id" cascade="all" /> 


     <many-to-one class="mappingfiles.Master2Sizerange" unique="true" name="sizeRangeId" column="size_range_id" cascade="all" /> 
     <many-to-one class="mappingfiles.Master2Sizerange" unique="true" name="oldSizeRangeId" column="old_size_range_id" cascade="all" /> 


     <many-to-one class="mappingfiles.Master2Racks" unique="true" name="rackId" column="rack_id" cascade="all" /> 
     <many-to-one class="mappingfiles.Master2Racks" unique="true" name="oldRackId" column="old_rack_id" cascade="all" /> 


    </class> 
</hibernate-mapping> 

TableUsers.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Jan 13, 2013 4:26:04 PM by Hibernate Tools 3.2.1.GA --> 
<hibernate-mapping> 
    <class name="mappingfiles.TableUsers" table="table_users" catalog="ortms"> 
     <id name="id" type="java.lang.Integer"> 
      <column name="id" /> 
      <generator class="identity" /> 
     </id> 
     <property name="userCode" type="string"> 
      <column name="user_code" length="60" /> 
     </property> 
     <property name="username" type="string"> 
      <column name="username" length="50" /> 
     </property> 
     <property name="password" type="string"> 
      <column name="password" length="50" /> 
     </property> 
     <property name="firstName" type="string"> 
      <column name="first_name" length="60" /> 
     </property> 
     <property name="lastName" type="string"> 
      <column name="last_name" length="60" /> 
     </property> 
     <property name="status" type="string"> 
      <column name="status" length="20" /> 
     </property> 
     <property name="createdDate" type="timestamp"> 
      <column name="created_date" length="19" /> 
     </property> 
     <property name="modifiedDate" type="timestamp"> 
      <column name="modified_date" length="19" /> 
     </property> 




     <many-to-one class="mappingfiles.TableDepartments" unique="true" name="deptId" column="dept_id" cascade="all" /> 
     <many-to-one class="mappingfiles.TableBranchesCompany" unique="true" name="branchId" column="branch_id" cascade="all" /> 
    </class> 
</hibernate-mapping> 

更新用3

我已經刪除cascade="all"所有映射屬性....現在我得到一個更新,其餘全部明確

Hibernate: insert into ortms.tool_modified_his_tbl (tool_desc, old_tool_desc, connec1, old_connec1, connec2, old_connec2, landed_cost, old_landed_cost, acqui_date, old_acqui_date, manuf_date, old_manuf_date, price_ref, old_price_ref, op_rate_cost, old_op_rate_cost, stb_rate_cost, old_stb_rate_cost, day_rate1_cost, old_day_rate1_cost, day_rate2_cost, old_day_rate2_cost, packermilling_cost, old_packermilling_cost, sale_value, old_sale_value, status, created_date, modified_date, tool_id, tool_modi_reas_id, tool_modi_usr_id, supplier_id, old_supplier_id, tc_status_id, old_tc_status_id, pricing_type_id, old_pricing_type_id, old_ownership_id, ownership_id, unit_id, old_unit_id, branch_id, old_branch_id, reta_tool_choice_id, old_reta_tool_choice_id, non_ser_tol_cho_id, old_non_ser_tol_cho_id, charge_by_id, old_charge_by_id, size_range_id, old_size_range_id, rack_id, old_rack_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
Hibernate: update ortms.master2_tool_master set tool_id=?, tool_desc=?, connec1=?, connec2=?, landed_cost=?, acqui_date=?, manuf_date=?, price_ref=?, op_rate_cost=?, stb_rate_cost=?, day_rate1_cost=?, day_rate2_cost=?, packermilling_cost=?, sale_value=?, uploaded_filename=?, uploaded_file=?, status=?, created_date=?, modified_date=?, supplier_id=?, tc_status_id=?, pricing_type_id=?, unit_id=?, reta_tool_choice_id=?, non_ser_tol_cho_id=?, branch_id=?, charge_by_id=?, size_range_id=?, rack_id=?, ownership_id=? where id=? 
+0

你是什麼意思「......變得過大」?它會給你錯誤/問題嗎?休眠的整點是「隱藏」的RDBMS交互... – 2013-03-04 12:02:09

+1

請郵寄tool_modified_his_tbl和ortms.table_users的映射,例如 – 2013-03-04 12:06:37

+0

沒有先生...我沒有得到任何錯誤,但插入沿如圖所示輸出我得到映射對象 – Denny 2013-03-04 12:06:54

回答

3

不需要的更新來自「級聯所有」設置。您可能需要根據您的需要正確配置它。例如,看看這裏:http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/

+0

先生可以請你告訴我,爲什麼現在我用插入 – Denny 2013-03-04 13:01:45

+1

很難說沒有看所有的映射相處只有一個更新幾個Hibernate的更新用。您是否也照顧過tool_modified_his_tbl中的級聯?如果你認爲它對你有好處,請接受我的回答。另外,如果您需要在問題中添加某些內容,請自行編輯問題,請勿添加答案。 SO不像一個論壇。感謝 – 2013-03-04 13:19:05

+0

是的,先生我已經刪除級聯=「全」,從tool_modified_his_tbl ....但仍然更新即將到來 – Denny 2013-03-04 13:23:53

1

使用dynamic-insert=truedynamic-update=true在一流水平

該查詢後會很短。它將只插入和更新指定的非空值。