码迷,mamicode.com
首页 > Web开发 > 详细

hibernate注解映射继承关系

时间:2015-03-18 07:53:17      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:

数据库表

用户表(User)

id username password

客户表(Customer),客户表id引用用户表id

id phone


员工表(Employee),员工表id引用用户表id

id qq

飞机表(Plane),飞机表包含客机和战斗机,客机有厕所,战斗机有武器

id type speed wc_position weapon_position

实体映射

//子类共享属性id,version
@MappedSuperclass
public abstract class IdentifiedEntity implements Serializable {
	@Id
	@GeneratedValue
	@Getter private Long id;
	
	@Version
	@Getter private int version;

	private void setId(Long id) { this.id = id; }
	private void setVersion(int version) { this.version = version; }
}

// User的id是在父类IdentifiedEntity中定义的
@Entity
public class User extends IdentifiedEntity {
	@Getter @Setter private String username;
	@Getter @Setter private String password;
}

//  Customer,Employee是User的子类
//  它们的id既是主键也是外键
//  它们的主键都作为外键引用User表的主键
@Entity
@PrimaryKeyJoinColumn(name = "id")
public class Customer extends User {
    @Getter @Setter private String phone;
}
@Entity
@PrimaryKeyJoinColumn(name = "id")
public class Employee extends User {
    @Getter @Setter private String qq;
}

// Plane是A370和J10的父类
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING)
public class Plane extends IdentifiedEntity{
    private String speed;
}
@Entity
@DiscriminatorValue("370")
public class A370 extends Plane{
    private String wc_position;
}
@Entity
@DiscriminatorValue("738")
public class j10 extends Plane{
    private String weapon_position;
}


hibernate注解映射继承关系

标签:

原文地址:http://my.oschina.net/osmos/blog/388018

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!