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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM