Solved

Hibernate delete operation help

Posted on 2014-01-27
7
291 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
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 

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 500 total points
ID: 39811580
it should match the variable name in the SupplierOrder POJO
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

746 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now