Spring jdbc SQL Bad语法异常,是选择列严格吗?

时间:2012-12-05 06:44:00

标签: spring spring-mvc spring-security

当我尝试使用Spring安全性通过数据库进行身份验证时,我已经搜索了几个示例,所有这些示例都与此查询类似:

<authentication-manager>
   <authentication-provider>
    <jdbc-user-service data-source-ref="dataSource"

       users-by-username-query="
          select username,password, enabled 
          from users where username=?" 

       authorities-by-username-query="
          select u.username, ur.authority from users u, user_roles ur 
          where u.user_id = ur.user_id and u.username =?  " 

    />
   </authentication-provider>
</authentication-manager>

如果我将如下更改查询,这是错误的吗?如果不是为什么?

<security:authentication-manager>
    <security:authentication-provider>
          <security:jdbc-user-service data-source-ref="dataSource"
                users-by-username-query="select login.name,login.passw from login where login.name=?"
          authorities-by-username-query="select login.name, login.type from login where login.name =?"/>

    </security:authentication-provider>
</security:authentication-manager>

这个我的例子给出了一个错误的SQL异常。

1 个答案:

答案 0 :(得分:1)

您可以使用别名:

users-by-username-query="select login.name username,login.passw password from login where login.name=?"

但我认为你也需要enabled。如果你没有在数据库中拥有它,你可以在查询中将其硬编码为真。