Hibernate插入查询

时间:2013-03-04 11:52:56

标签: java hibernate hql hibernate-mapping insert-query

在插入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=?

2 个答案:

答案 0 :(得分:4)

不需要的更新来自“全部级联”设置。您可能希望根据需要正确配置它。例如,请看一下:http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/

答案 1 :(得分:1)

在班级使用dynamic-insert=truedynamic-update=true

在此之后,您的查询会很短。它将仅插入和更新指定的非空值。