AbstractClass InstanceOf specificClass不起作用

时间:2018-10-08 09:25:14

标签: java abstract-class

嗨,有一个奇怪的错误。

我一直使用instanceof来查看抽象类的特定对象, 但是没有跑,我不明白为什么。

我为使用Javaspring boot)创建的1.5.16.RELEASE项目工作,是一个maven项目,使用JAVA8,并且我的MySql数据库使用{ {1}}。

我有一个abstractClass来定义用于登录的用户。一个用户只能有一个角色,并且创建了一个AbstractUser类:

querydsl-jpa

我的扩展类之一是:

    @Entity
@Audited
@Data
@DiscriminatorColumn(name="dType", discriminatorType = DiscriminatorType.STRING)
public abstract class AbstractUser extends AbstractDomainAudit{

    private static final long serialVersionUID = 7060362023055663647L;

    @Column(updatable=false, insertable=false)
    private String dType;

    @JsonIgnore
    private String password;

    @JsonIgnore
    @Transient
    private String newPassword;

    @JsonIgnore
    @Transient
    private String confirmNewPassword;

    @Column(nullable=false,unique=true, updatable=false)
    private String userName;

    private boolean able;

    private String name;

    @Email
    private String email;

}

但是当在我的控制器中时,我尝试定义instanceof而不是运行:

   @Entity
@Audited
@Data
@DiscriminatorValue(value = "Admin")
public class Administrators extends AbstractUser implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 7061564146290031007L;
}

我的情况被忽略。 而且我不明白为什么。谁能帮我吗?

1 个答案:

答案 0 :(得分:0)

JPA注释的类可以在运行时进行代理。尝试记录实例的类

user.getClass().getCanonicalName()

例如,在这里看看:JPA, inheritance and instanceof