java父类和mysql主表关系_Hibernate 继承关系映射注解配置

a4c26d1e5885305701be709a3d33442f.png

父类:Stuff.java

子类:Skill.java和Sell.java

1、先把主表、子表建好

主表Stuff(ID为主键)

a4c26d1e5885305701be709a3d33442f.png

子表skills

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

子表sells

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

2、编写实体类(注解的方式)

父类Stuff.java

@Entity

@Table(name="STUFF"

,schema="TEST"

)

@Inheritance(strategy=InheritanceType.JOINED)

Skill.java类

package com.lwx.annotation.entity;

// default package

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Inheritance;

import javax.persistence.InheritanceType;

import javax.persistence.PrimaryKeyJoinColumn;

import javax.persistence.Table;

@Entity

@Table(name = "SKILLS", schema = "TEST")

@PrimaryKeyJoinColumn(name="SKILL_ID")

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)public class Skill extends Stuff {

// Fields

private String skill_name;

// Constructors

@Column(name = "SKILLS_NAME", length = 100)

public String getSkill_name() {

return skill_name;

}

public void setSkill_name(String skillName)

{

skill_name = skillName;

}

public Skill() {

}

}

sell.java类

package com.lwx.annotation.entity;

// default package

import java.math.BigDecimal;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.GeneratedValue;

import static javax.persistence.GenerationType.SEQUENCE;

import javax.persistence.DiscriminatorValue;

import javax.persistence.Id;

import javax.persistence.Inheritance;

import javax.persistence.InheritanceType;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.PrimaryKeyJoinColumn;

import javax.persistence.SequenceGenerator;

import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

import org.hibernate.annotations.Parameter;

@Entity

@Table(name = "SELLS", schema = "TEST")

@PrimaryKeyJoinColumn(name="SELL_ID")

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)public class Sell extends Stuff {

// Fields

private String sell_name;

// Constructors

@Column(name = "SELLS_NAME", length = 100)

public String getSell_name() {

return sell_name;

}

public void setSell_name(String sellName)

{

sell_name = sellName;

}

public Sell() {

}

}

test.java类

public class test {

public static void

main(String[] args) {

Configuration

cfg=new AnnotationConfiguration().configure();

SessionFactory

sf=cfg.buildSessionFactory();

Session

session=sf.openSession();

// Transaction

tx=session.beginTransaction();

//数据库操作

try

{

Stuff

stuff=(Stuff)session.get(Stuff.class, 21);

System.out.println(stuff.getClass().getName());

// tx.commit();

}

catch (Exception e) {

e.printStackTrace();

//tx.rollback();

}

session.close();

sf.close();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值