嗨,有一个奇怪的错误。
我一直使用instanceof
来查看抽象类的特定对象,
但是没有跑,我不明白为什么。
我为使用Java
(spring 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;
}
我的情况被忽略。 而且我不明白为什么。谁能帮我吗?
答案 0 :(得分:0)
JPA注释的类可以在运行时进行代理。尝试记录实例的类
user.getClass().getCanonicalName()
例如,在这里看看:JPA, inheritance and instanceof