当前位置: 首页 > 知识库问答 >
问题:

关于hibernate继承映射和鉴别器列,我如何知道是哪种类型的对象?

姬锐
2023-03-14

if(Object.Obj_Type==1){}

另外,如何在运行时获得鉴别器值?

共有1个答案

慕宏儒
2023-03-14

您想要的是有一个抽象的超级类,在这个超级类中定义鉴别器列和子类来定义鉴别器值。

@Entity
@DiscriminatorColumn(name = "_type")
public abstract class AbstractSuperClass {

    @Column(name = "_type", insertable=false, updatable=false, nullable = false)
    private String type;    

}

@Entity
@DiscriminatorValue(SubClass.TYPE)
public class SomeSubClass extends AbstractSuperClass {

    public static final String TYPE = "SOME_SUBTYPE";
}

所以基本上在运行时,您可以使用instanceof进行检查

if(object instanceof SomeSubClass){}

甚至使用类型值

AbstractSuperClass object = ..
if(object.getType() == SomeSubClass.TYPE){}
 类似资料:
  • 1. 前言 本节课程和大家一起学习继承映射。通过本节课程的学习,你将了解到: 什么是继承映射; 实现继承映射的 3 种方案。 2. 继承映射 学习继承映射之前,需要搞清楚什么是继承映射? 继承是 OOP 中的概念,其目的除了复用代码之外,还用来描述对象在现实世界中的关系。 为了更好地讲解继承映射,咱们再在数据库中创建一张老师表。数据库中多了一张表,按照使用 Hibernate 的套路,理所当然应该

  • 问题内容: 我的数据模型代表法人实体,例如企业或个人。两者都是纳税实体,都具有TaxID,电话号码和邮件地址的集合。 我有一个Java模型,其中有两个扩展抽象类的具体类。抽象类具有两个具体类共有的属性和集合。 我正在 MySQL* 数据库上使用 Hibernate JPA注释,其类如下: * 问题是,和对象需要参考他们的主人,这是一个。hibernate抱怨: 看来这将是一个相当普遍的Java继承

  • 我有一个这样的场景 它的子类具有鉴别器值“creator” 现在,我不想再为帐户类型“user”添加一个类(类似于),因为“creator”和“user”都与帐户类型相关。 我需要一个可能的解决方案,在这里设置我的鉴别器值要么‘创建者’或‘用户’的基础上,帐户的类型。 有没有办法根据条件在类内部设置我的鉴别器值? 我如何继续执行? 请帮帮我。

  • 生成的hibernate代码显示它正在尝试将type值插入basic_configuration表而不是area_configuration表: 这个错误似乎是在hibernate版本4.2.9.Final以后引入的,低于4.2.9.Final的版本似乎没有这个问题,有人知道我如何解决这个问题吗?多谢。

  • 我有一个与鉴别器列连接的继承映射。 父实体: 附注。我使用的是hibernate 5.0.9.Final。

  • 我在Hibernate中有道传承,下面是代码: 用户DAO: 我有一个域类用户和两个子类用户:Customer和Sales。我有两个dao类,分别用于客户和销售。 用户DAO: 客户道: 销售DAO: 我的问题是,当我使用CusterDap调用方法getUserByUsername()(继承自BaseDaoImpl)与销售的用户名(拥有用户名的用户是SalesRep的实例,而不是客户)时,它会抛出