Spring安全用户详细信息与Oracle

时间:2015-11-25 10:37:40

标签: java spring spring-security

我实现了具有某些方法的接口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中。?

1 个答案:

答案 0 :(得分:0)

这是一个JPA / Hibernate问题,它不是特定于弹簧安全性的。

有关纯粹的JPA实现或hibernate实现的其他注释,请参阅https://stackoverflow.com/a/22368268/2257772

您应该更改问题的标签/标题