簡體   English   中英

使用Oracle的Spring Security UserDetails

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM