https://img2020.cnblogs.com/blog/1101843/202010/1101843-20201029092119794-1182278230.jpg

支付宝

https://img2020.cnblogs.com/blog/1101843/202010/1101843-20201029091740174-1560674849.png

微 信

JPA注解 @DiscriminatorValue 使用

父类

@Entity
@Table(name = "T_CAR")
// 使用此注释:T_CAR表中必须添加CAR_TYPE字段,如果不使用此注释:表中也必须添加默认的DTYPE字段 @DiscriminatorColumn(name
= "CAR_TYPE") public class Car extends EntityBean implements Serializable { // 此处省略... }

子类

@Entity
@DiscriminatorValue("BENZ")
public class Benz extends Car {
    // 此处省略
}

子类

@Entity
@DiscriminatorValue("BMW")
public class BMW extends Car {
    // 此处省略
}
@DiscriminatorValue("BENZ")注释在子类,就会默认T_CAR表中有DTYPE字段,
查T_CAR表的时候,默认是使用DTYPE='BENZ'条件查询
建表的时候一定要添加DTYPE字段,否则会报:ORA-00904: "T_CAR"."DTYPE": 标识符无效

SELECT DTYPE FROM T_CAR WHERE DTYPE='BENZ';
SELECT DTYPE FROM T_CAR WHERE DTYPE='BMW';
@DiscriminatorColumn(name = "TYPE")注释在父类,就是将默认的 DTYPE 字段改名为自定义的 CAR_TYPE
查T_CAR表的时候,默认是使用CAR_TYPE='BENZ'条件查询
建表的时候一定要添加CAR_TYPE字段,否则会报:ORA-00904: "T_CAR"."CAR_TYPE": 标识符无效
SELECT CAR_TYPE FROM T_CAR WHERE CAR_TYPE='BENZ';
SELECT CAR_TYPE FROM T_CAR WHERE CAR_TYPE='BMW';


---------------------------------------------------------

多对多的时候,关联中间表,下面的字段都是关联字段
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "中间表",joinColumns = {
 @JoinColumn(name="中间表与当前表关联的字段",referencedColumnName = "当前表与中间表关联的字段")},inverseJoinColumns = {
  @JoinColumn(name = "中间表与另一个表关联的字段",referencedColumnName = "另一个表与中间表关联的字段")})
private List<另一个表实体> entitys;

 

posted @ 2020-06-16 16:48  huangwanlin  阅读(3138)  评论(0编辑  收藏  举报
Copyright 2012-2021 林云希科技有限责任公司