[英]Spring Security UserDetails with Oracle
我正在實現具有某些方法的UserDetails
接口。 它們都返回一個布爾值,例如:
public boolean isAccountNonExpired();
在Oracle中不存在BOOLEAN
類型作為SQL列表屬性,因此我必須將其定義為VARCHAR2(1)
。
我是我的類(實現UserDetails
),我已將字段accountNonExpired定義為String(而不是boolean)。
因此,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中是自然的。
這是一個JPA / Hibernate問題,並非特定於Spring安全性。
有關純JPA的實現,請參見https://stackoverflow.com/a/22368268/2257772 ,有關休眠的JPA實現,請參見其他注釋。
您應該更改問題的標簽/標題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.