2015-05-13 3 views
3

Я пытаюсь интегрировать Spring Social в верхней части Spring Security в приложении Spring Boot. Но похоже, что у Spring Security возникают проблемы с созданием таблиц по умолчанию, например. UserConnection, UserProfile и т.д., так как я получаю эти ошибки SQL после того, как успешно установлено соединение с провайдером oauth2:Spring Security - таблицы по умолчанию не созданы

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] 

Это статический SQL вызов весной при условии JdbcUsersConnectionRepository. Я попытался перейти к реализации 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 Boot H2, которая хорошо работает с JpaRepositories.

Спасибо! :)

+0

я получил это работает после этого урока http://goo.gl/qAxitC - но у меня есть проблема, превращая этот SQL для класса сущностей. Весна хочет, чтобы я создал все таблицы вместо этих двух. – Hinotori

ответ

2

Найдено решение сам :)

В конце концов я нашел самое первое, что которым не обрабатываются некоторые фантазии автомагически пружинным механизмом, но с обычной «schema.sql» в SRC/главная/каталог ресурсов.

create table UserConnection (
 
    userId varchar(255) not null, 
 
    providerId varchar(255) not null, 
 
    providerUserId varchar(255), 
 
    rank int not null, 
 
    displayName varchar(255), 
 
    profileUrl varchar(512), 
 
    imageUrl varchar(512), 
 
    accessToken varchar(1024) not null, 
 
    secret varchar(255), 
 
    refreshToken varchar(255), 
 
    expireTime bigint, 
 
    primary key (userId, providerId, providerUserId)); 
 
create unique index UserConnectionRank on UserConnection(userId, providerId, rank); 
 

 
create table UserProfile (
 
    userId varchar(255) not null, 
 
    email varchar(255), 
 
    firstName varchar(255), 
 
    lastName varchar(255), 
 
    name varchar(255), 
 
    username varchar(255), 
 
    primary key (userId)); 
 
create unique index UserProfilePK on UserProfile(userId);

+1

Правильно. Spring Social автоматически не создает эти таблицы для вас. Есть много причин, почему, но основная причина заключается в том, что нет единого размера, способного создавать эти таблицы. Хотя мы могли бы определить специфический для поставщика SQL для каждого поставщика БД, и автоматически создали эти таблицы, никогда не было приоритетом для этого. –

+0

Но проблема в том, что когда я пытаюсь создать эти объекты самостоятельно, используя «@Entity» и «@Table», пружина жалуется на другие таблицы (пользователи, пользователи_роли, полномочия и т. Д.), И я должен сам их создать. Разве это не странно ?! И эти таблицы не созданы в magic schema.sql. Они созданы на лету ?! почему весна не жалуется на этот подход ?! – Hinotori

 Смежные вопросы

  • Нет связанных вопросов^_^