【问题标题】:Spring Security standard table fields VS Hibernate required fieldsSpring Security 标准表字段 VS Hibernate 必填字段
【发布时间】:2026-01-19 17:15:01
【问题描述】:

是否可以更改标准Spring Security 表字段? http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-schema.html

尤其是Hibernate 要求我为这些表添加id 字段:

users

authorities

例外:

org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): model.Authorities

这意味着,我应该将 id 字段添加到我的模型 bean 中,并将配置添加到 *hbm.xml:

 <id name="id">
            <generator class="assigned"/>
 </id>

最佳做法是什么?
我应该更改 Spring Security DB 表结构还是以某种方式处理 Hibernate?

【问题讨论】:

    标签: hibernate spring-security structure field


    【解决方案1】:

    只要JdbcDaoImpl 发出的SQL 查询不受影响就可以。并且即使您需要更改这些查询,您也可以通过适当地配置JdbcDaoImpl 来完成。

    但是,也许最好创建一个 UserDetailsService 的自定义实现,它可以重用您的 DAO 来加载用户信息,并配置 Spring Security 以将其用作

    <security:authentication-provider user-service-ref = "..." />
    

    【讨论】: