hibernate join subclass annotations:
-----------------------------------
Employee.java:
----------------
package madhav;
import javax.persistence.Entity;
import javax.persistence.*;
@Entity
@Table(name="employee")
@Inheritance(strategy=InheritanceType.JOINED)
public class Employee {
@Id
private int empno;
private String ename;
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
}
SalariedEmployee.java:
-------------------------
package madhav;
import javax.persistence.DiscriminatorValue;
import javax.persistence.*;
@Entity
@Table(name="salariedemp")
@PrimaryKeyJoinColumn(name="empno")
public class SalariedEmployee extends Employee {
public double annualSal;
public double getAnnualSal() {
return annualSal;
}
public void setAnnualSal(double annualSal) {
this.annualSal = annualSal;
}
}
hibernate.cfg.xml:
------------------
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.url">jdbc:mysql://localhost:3306/mysql</property>
<property name="connection.username">root</property>
<property name="connection.password">mysql</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<mapping class="madhav.Employee" />
<mapping class="madhav.SalariedEmployee"/>
</session-factory>
</hibernate-configuration>
TestCase.java
----------------
package madhav;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.classic.Session;
public class TestCase {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
// Create the SessionFactory from hibernate.cfg.xml
SessionFactory sf= new
AnnotationConfiguration().configure().buildSessionFactory();
Session s=sf.openSession();
Transaction tx=s.beginTransaction();
Employee e=new Employee();
e.setEmpno(101);
e.setEname("madhav");
SalariedEmployee se=new SalariedEmployee();
se.setAnnualSal(2000);
se.setEmpno(12);
se.setEname("raghu");
s.save(se);
s.save(e);
tx.commit();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
}
}
}
output from console:
--------------------
- hibernate-basic-example(xml-based)
- hibernate-inheritance-tableforclass-hierarchy(xml-based)
- hibernate-inheritance-joinsubclass-(xml-based)
- hibernate-inheritance-tableforconcreteclass(xml-based)
- hibernate-onetoone-relation(xml-based)
- hibernate-onetomany-relation(xml-based)
- hibernate-manytomany-relation(xml-based)
- hibernate-basic-example(Annotation-based)
- hibernate-inheritance-tableforclass-hierarchy(Annotation-based)
- hibernate-inberitance-joinsubclass-(Annotation-based)
- hibernate-inheritance-tableforconcreteclass(Annotation-based)
- hibernate-onetoone-relation(Annotation-based)
- hibernate-onetomany-relation(Annotation-based)
- hibernate-manytomany-relation(Annotation-based)
No comments:
Post a Comment