我实现了具有某些方法的接口UserDetails
。所有这些都返回一个布尔值,例如:
public boolean isAccountNonExpired();
在Oracle中,不存在BOOLEAN
类型作为SQL列表属性,因此我必须将其定义为VARCHAR2(1)
。
我的班级(实现UserDetails
)我已将字段accountNonExpired定义为字符串(而不是布尔值)。
因此,isAccountNonExpired()是这样的:
@Column(name = "Account_Non_Expired")
@Override
@XmlElement @JsonProperty
public boolean isAccountNonExpired()
{
return new Boolean(this.accountNonExpired);
}
当我尝试执行登录(并且存储库查询表)时,我收到以下错误:
HHH000123: IllegalArgumentException in class: it.dirimologistika.site.entities.UserPrincipal, setter method of property: accountNonExpired
HHH000091: Expected type: java.lang.String, actual value: java.lang.Boolean
我如何使用VARCHAR2(1)而不是BOOLEAN重写此类(并实现此方法)?这在MySQL中很自然,但在Oracle中。?
答案 0 :(得分:0)
这是一个JPA / Hibernate问题,它不是特定于弹簧安全性的。
有关纯粹的JPA实现或hibernate实现的其他注释,请参阅https://stackoverflow.com/a/22368268/2257772。
您应该更改问题的标签/标题