Автоматически создавать Spring Entity "авторитеты" во время тестирования - PullRequest
2 голосов
/ 14 августа 2010

При попытке юнит-тестов с помощью Spring Security & Hibernate ни один из объектов безопасности "пользователь" или "полномочия" не создается автоматически. На данный момент я написал «user» bo, который запускает генерацию подходящей таблицы. Тем не менее, я застрял с властями:

(в соответствии с рекомендациями http://java.dzone.com/articles/getting-started-spring для postgresql)

  CREATE TABLE authorities
  (
    username character varying(50) NOT NULL,
    authority character varying(50) NOT NULL,
    CONSTRAINT fk_authorities_users FOREIGN KEY (username)
        REFERENCES users (username) MATCH SIMPLE
        ON UPDATE NO ACTION ON DELETE NO ACTION
  );
  1. Вопрос: Каков подходящий синтаксис для Hibernate / JPA2 для создания BO, представляющего этот запрос?

  2. Вопрос: На самом деле я не хочу создавать запись, используя мой собственный BO. Есть ли лучший способ заставить Spring Security или Hibernate создавать все необходимые таблицы во время тестового запуска?

Спасибо

Ответы [ 2 ]

1 голос
/ 15 августа 2010

На самом деле я не хочу создавать запись, используя мой собственный BO. Есть ли лучший способ заставить Spring Security или Hibernate создавать все необходимые таблицы во время тестового запуска?

Если вы не планируете использовать Hibernate для взаимодействия с этими таблицами, то вряд ли имеет смысл иметь для них сущности.

Таким образом, я предлагаю разместить сценарий создания таблиц Spring Security в файле import.sql и поместить этот файл в корень пути к классам, и Hibernate автоматически выполнит его после экспорта схемы. Подробнее см. Spring / Hibernate: вставка тестовых данных после создания DDL (просто поместите операторы DDL в одну строку).


Спасибо, Паскаль, это именно то, что я искал, однако, это не работает. Я использую maven и помещаю import.sql в корень ресурсов dir (content: CREATE TABLE justatest (символ меняется (50) NOT NULL);). Я тоже поставил. Запуск тестовых копий mvn import.sql в целевой каталог ... но ничего не происходит. logback [debug] вообще не упоминает import.sql. Есть идеи, где я иду не так? (Hibernate V 3.5.1-Final)

Я использую эту функцию с Maven и не могу воспроизвести вашу проблему. У меня hbm2ddl.auto установлено значение create, мой файл import.sql находится в src/test/resources, и он выполняется, как и ожидалось, в конце экспорта схемы при выполнении тестов. Вот запись в журнале, которую я получаю (используя logback):

20:44:37.949 [main] INFO  o.h.tool.hbm2ddl.SchemaExport - Executing import script: /import.sql
1 голос
/ 14 августа 2010

Например, установите для свойства hibernate hibernate.hbm2ddl.auto значение update.Это должно позволить hibernate автоматически создавать (и обновлять) таблицы при необходимости.

<property name="hibernate.hbm2ddl.auto" value="update" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...