当我只有product类和两个用继承策略扩展product的类时电子学,园艺)工作正常。但是如果我尝试创建新的single_table继承关系(electronics ->智能手机,电脑)我有一个警告:
产品类Discriminator列必须在根实体中定义,它将是
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@DiscriminatorColumn(name = "type")
public abstract class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "info")
private String info;
@Column(name = "basic_characteristics")
private String basicCharacteristics;
@Column(name = "price")
private Integer price = 0;
}
电子类:
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@DiscriminatorValue("electronics")
@DiscriminatorColumn(name = "typeElectronics")
public class Electronics extends Product {
@Column(name = "electronics_data")
private String electronicsData;
}
智能手机类:
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Data
@DiscriminatorValue("smartphone")
public class Smartphone extends Electronics{
@Column
private String smartphoneInfo;
}
我想把电子学分成两个不同领域的实体。
https://docs.oracle.com/javaee/7/api/javax/persistence/DiscriminatorColumn.html
策略和鉴别符列只在根实体类的层次结构或子层次结构在其中不同应用继承策略
根据文档,我不认为这个例子中的Electronics
类可以为它的子类有额外的鉴别符列。