我有一个父类电子和子类照相机和移动。我使用Hibernate继承单表类型。我想得到所有的电子产品和他们的产品类型,但在获取,我无法得到的产品类型,这也是鉴别列。这是我第一个使用springboot和hibernate的项目。如能提供任何帮助,将不胜感激。
电子类
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Table(name = "electronics")
@DiscriminatorColumn(name = "product_Type", discriminatorType = DiscriminatorType.STRING)
public class Electronics {
@Id
@GenericGenerator(name = "CamIdGenerator", strategy = "com.virtusa.neuralhack.vlx.IdGenerator.CameraIdGenerator")
@GeneratedValue(generator = "CamIdGenerator")
@Column(name = "product_id")
private String productId;
private String askingPrice;
@Column(name = "age")
private String howOld;
@Column(name = "model")
private String model;
@Column(name = "brand")
private String brand;
@Column(name = "description")
private String description;
transient private String email;
\\ getters and setter电子存储库
@Override
public List<Electronics> getDefaultElectronicProducts() {
//System.out.println("repo check 1");
Session currentSession = manager.unwrap(Session.class);
//Query<Electronics> query = currentSession.createQuery("Select * from electronics Order By Rand() Limit 6", Electronics.class);
//System.out.println("repo check 2");
String query = "FROM Electronics ORDER BY RAND()";
Query<Electronics> q =(Query<Electronics>) manager.createQuery(query,Electronics.class);
q.setMaxResults(5);
List<Electronics> defaultProductList = q.getResultList();
//System.out.println("repo check 3");
//System.out.println(defaultProductList.get(1));
return defaultProductList;
}发布于 2020-10-02 08:02:33
我想您已经用包含产品类型值的@DiscriminatorValue注释正确地注释了子类?在这种情况下,检查结果列表中的对象类型。您将看到,根据数据库中的值,您将得到子类的实例。你就是这样找出类型的。我认为您也可以在@Column(name = "product_Type", insertable = false, updatable = false)实体中将产品类型建模为Electronics,但我不建议这样做,以避免对实际值的可能混淆。
https://stackoverflow.com/questions/64155327
复制相似问题