首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取带有判别器列值的Hibernate继承类型SingleTable的整行?

如何获取带有判别器列值的Hibernate继承类型SingleTable的整行?
EN

Stack Overflow用户
提问于 2020-10-01 12:22:44
回答 1查看 152关注 0票数 0

我有一个父类电子和子类照相机和移动。我使用Hibernate继承单表类型。我想得到所有的电子产品和他们的产品类型,但在获取,我无法得到的产品类型,这也是鉴别列。这是我第一个使用springboot和hibernate的项目。如能提供任何帮助,将不胜感激。

电子类

代码语言:javascript
复制
@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

电子存储库

代码语言:javascript
复制
@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;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 08:02:33

我想您已经用包含产品类型值的@DiscriminatorValue注释正确地注释了子类?在这种情况下,检查结果列表中的对象类型。您将看到,根据数据库中的值,您将得到子类的实例。你就是这样找出类型的。我认为您也可以在@Column(name = "product_Type", insertable = false, updatable = false)实体中将产品类型建模为Electronics,但我不建议这样做,以避免对实际值的可能混淆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64155327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档