?
Solved

Hibernate delete operation help

Posted on 2014-01-27
7
Medium Priority
?
360 Views
Last Modified: 2014-01-27
Hello there,

I need help to understna dand implement the delete operation in hibernate. I have these two POJO classes
1. SupplierOrder
2. SupplierOrderDetails

and I have these two hbm files which look like this. In the db I have these two tables from my hbm and I have fk from supplierOrder to SupplierOrderDetails table

<hibernate-mapping>
	<class name="com.kaizen.erp.shared.entities.SupplierOrder" table="supplierOrder">
		<id name="id" type="java.lang.Long">
			<column name="ID" />
			<generator class="identity" />
		</id>
		<many-to-one name="section" class="com.kaizen.erp.shared.entities.Section"
			fetch="select">
			<column name="sectionID" />
		</many-to-one>

		<many-to-one name="supplier"
			class="com.kaizen.erp.shared.entities.Supplier" fetch="select">
			<column name="supplierID" />
		</many-to-one>

		<property name="supplierOrderNo" type="string">
			<column name="supplierOrderNo" />
		</property>
		
		<property name="supplierOrderCreated" type="java.util.Date">
			<column name="supplierOrderCreated" />
		</property>
	</class>
</hibernate-mapping>

Open in new window



<hibernate-mapping>
    <class name="com.kaizen.erp.shared.entities.SupplierOrderDetails" table="supplierOrderDetails">
        <id name="id" type="java.lang.Long">
            <column name="id" />
            <generator class="identity" />
        </id>
        <many-to-one name="supplierOrderID" class="com.kaizen.erp.shared.entities.SupplierOrder" fetch="select">
            <column name="supplierOrderID" />
        </many-to-one>
        <many-to-one name="productID" class="com.kaizen.erp.shared.entities.Product" fetch="select">
            <column name="productID" />
        </many-to-one>
        <property name="orderPoint" type="java.lang.Integer">
            <column name="orderPoint" />
        </property>
        <property name="stockCount" type="java.lang.Integer">
            <column name="stockCount" />
        </property>
        <property name="lastMonthSales" type="java.lang.Integer">
            <column name="lastMonthSales" />
        </property>
        <property name="avgMonthlySales" type="java.lang.Integer">
            <column name="avgMonthlySales" />
        </property>
        <property name="avgMonthlySales_stock" type="java.lang.Integer">
            <column name="avgMonthlySales_stock" />
        </property>
         <property name="orderQty" type="java.lang.Integer">
            <column name="orderQty" />
        </property>
	</class>
</hibernate-mapping>

Open in new window


now I want to implement delete operation so that when I delete a supplierorder record it should also delete its related supplierorderdetail from the db. I am new to hibernate and need how to do it and explanation for it.
0
Comment
Question by:zolf
  • 4
  • 3
7 Comments
 
LVL 20

Expert Comment

by:chaitu chaitu
ID: 39811387
you can do that using cascase option in hbm file.check this link.

http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/
0
 

Author Comment

by:zolf
ID: 39811398
thanks for your comments.

can you please show me the code how it will look in my case
0
 
LVL 20

Expert Comment

by:chaitu chaitu
ID: 39811408
<hibernate-mapping>
	<class name="com.kaizen.erp.shared.entities.SupplierOrder" table="supplierOrder">
		<id name="id" type="java.lang.Long">
			<column name="ID" />
			<generator class="identity" />
		</id>
		<many-to-one name="section" class="com.kaizen.erp.shared.entities.Section"
			fetch="select">
			<column name="sectionID" />
		</many-to-one>

		<many-to-one name="supplier"
			class="com.kaizen.erp.shared.entities.Supplier" fetch="select">
			<column name="supplierID" />
		</many-to-one>

		<property name="supplierOrderNo" type="string">
			<column name="supplierOrderNo" />
		</property>
		
		<property name="supplierOrderCreated" type="java.util.Date">
			<column name="supplierOrderCreated" />
		</property>

<set name="supplierOrderDetails" cascade="delete-orphan" table="supplierOrderDetails" >
      <key>
            <column name="supplierOrderID" not-null="true" />
      </key>
      <one-to-many class="com.kaizen.erp.shared.entities.SupplierOrderDetails" />
</set>
	</class>
</hibernate-mapping>

Open in new window

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:zolf
ID: 39811422
is that all I need to do in my code to be able to use delete cascade. I mean when I del a SupplierOrder record it will delete its linked SupplierOrderDetails
0
 
LVL 20

Expert Comment

by:chaitu chaitu
ID: 39811442
yes.see the code written in the above link.
0
 

Author Comment

by:zolf
ID: 39811455
<set name="supplierOrderDetails" cascade="delete" table="supplierOrderDetails" >

this set name can be any name or it should match the variable name in the SupplierOrder POJO classes

private Set<SupplierOrderDetails> sod = new HashSet<SupplierOrderDetails>(0);
0
 
LVL 20

Accepted Solution

by:
chaitu chaitu earned 2000 total points
ID: 39811580
it should match the variable name in the SupplierOrder POJO
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I had a project requirement for a displaying a user workbench .This workbench would consist multiple data grids .In each grid the user will be able to see a large number of data. These data grids should allow the user to 1. Sort 2. Export the …
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
How to fix incompatible JVM issue while installing Eclipse While installing Eclipse in windows, got one error like above and unable to proceed with the installation. This video describes how to successfully install Eclipse. How to solve incompa…
Suggested Courses
Course of the Month12 days, 21 hours left to enroll

580 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question