Spring安全性-未创建默认表
我正试图在Spring启动应用程序中,在Spring安全性的基础上集成Spring Social。但Spring Security似乎在创建默认表时遇到了问题,例如UserConnection、UserProfile等,因为在成功建立到oauth2提供程序的连接后,我收到了以下SQL错误:Spring安全性-未创建默认表,spring,spring-security,spring-social-google,Spring,Spring Security,Spring Social Google,我正试图在Spring启动应用程序中,在Spring安全性的基础上集成Spring Social。但Spring Security似乎在创建默认表时遇到了问题,例如UserConnection、UserProfile等,因为在成功建立到oauth2提供程序的连接后,我收到了以下SQL错误: PreparedStatementCallback; bad SQL grammar [select userId from UserConnection where providerId = ? and p
PreparedStatementCallback; bad SQL grammar [select userId from UserConnection where providerId = ? and providerUserId = ?]; nested exception is org.h2.jdbc.JdbcSQLException: Tabelle "USERCONNECTION" nicht gefunden Table "USERCONNECTION" not found; SQL statement: select userId from UserConnection where providerId = ? and providerUserId = ? [42102-185]
这是spring提供的JdbcUsersConnectionRepository中的静态SQL调用。我试图切换到InMemory实现,以避免SQL问题,但随后出现了下一个问题:
PreparedStatementCallback; bad SQL grammar [INSERT into userProfile(userId, email, firstName, lastName, name, username) values(?,?,?,?,?,?)]; nested exception is org.h2.jdbc.JdbcSQLException: Tabelle "USERPROFILE" nicht gefunden Table "USERPROFILE" not found; SQL statement: INSERT into userProfile(userId, email, firstName, lastName, name, username) values(?,?,?,?,?,?) [42102-185]
USERPROFILE表也丢失
在我发布大量配置片段之前,您是否已经知道一些我可能忘记的信息,这些信息告诉spring为我创建这些表?:)
目前,我使用的是Spring引导标准H2内存数据库,它与JpaRepositories配合得很好
谢谢!:) 自己找到了解决方案 我最终发现,第一件事并不是由某种奇特的自动Spring机制处理的,而是在src/main/resources目录中使用一个简单的“schema.sql”
创建表用户连接(
userId varchar(255)不为空,
providerId varchar(255)不为空,
providerUserId varchar(255),
秩int不为空,
displayName varchar(255),
profileUrl varchar(512),
imageUrl varchar(512),
accessToken varchar(1024)不为空,
秘密瓦尔查(255),
刷新令牌varchar(255),
ExpireTimeBigint,
主键(userId、providerId、providerUserId));
在UserConnection上创建唯一索引UserConnectionRank(userId、providerId、rank);
创建表UserProfile(
userId varchar(255)不为空,
电子邮件varchar(255),
名字叫瓦查尔(255),
姓氏varchar(255),
名称varchar(255),
用户名varchar(255),
主键(userId));
在UserProfile(userId)上创建唯一索引UserProfilePK代码>没错。SpringSocial不会自动为您创建这些表。原因有很多,但主要原因是没有一种一刀切的方法来创建这些表。虽然我们可以为每个DB供应商定义一个特定于供应商的SQL并自动创建这些表,但这样做从来都不是优先考虑的事情。但问题是,当我尝试自己使用“@Entity”和“@Table”创建这些实体时,spring会抱怨其他表(用户、用户、角色、权限等)我必须自己创造它们。这不是很奇怪吗?!这些表不是在magic schema.sql中创建的。它们是在飞行中创造的吗?!为什么spring不抱怨这种方法?!在本教程之后,我就可以使用它了,但是我在将sql转换为类实体时遇到了一个问题。spring希望我创建所有表,而不是这两个表