2010-08-14 3 views
2

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

(в соответствии с рекомендациями 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 создавать все необходимые таблицы во время тестового прогона?

Благодаря

+0

hm, а что такое BO? – Bozho

+0

Мой бизнес-объект, представляющий объект. То, что я пробовал, - это класс с двумя свойствами (private String username; private String authority;). Первая проблема: при компиляции я получаю неправильную ошибку id. Затем у нас есть отношения @ManyToOne relationship.username :: users.username, но мне нужен тип String, а не коллекция строк ... вот где я застрял –

ответ

1

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

<property name="hibernate.hbm2ddl.auto" value="update" /> 
+0

Привет. Спасибо за совет. Однако мой 1. Вопрос относится к коду BO - я не знаю, как создать противопоказание. Пример? –

1

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

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

Мое предложение состоит в том, чтобы разместить таблицы безопасности весов creation script в файле import.sql и поместить этот файл в корень пути класса, а Hibernate автоматически выполнит его после экспорта схемы. Подробнее см. В разделе Spring/Hibernate testing: Inserting test data after DDL creation (просто поместите свои инструкции DDL в одну строку).


Спасибо, Паскаль, это как раз то, что я искал, однако, он не работает. Я использую maven и помещаю import.sql в корневой каталог ресурсов (содержимое: CREATE TABLE justatest (aaa character variable (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 и он выполняется, как ожидается, в конце экспорта схемы при выполнении тестов. Вот запись в журнале, которую я получаю (используя журнал):

20:44:37.949 [main] INFO o.h.tool.hbm2ddl.SchemaExport - Executing import script: /import.sql 
+0

Спасибо, Паскаль, это именно то, что я искал, однако это не сработает. Я использую maven и помещаю import.sql в корневой каталог ресурсов (содержимое: CREATE TABLE justatest (aaa character variable (50) NOT NULL);). Я также устанавливаю <свойство name = "hibernate.hbm2ddl.auto" value = "create" />. Запуск тестовых копий mvn import.sql в целевой каталог ... но ничего не происходит. logback [debug] вообще не упоминает import.sql. Любая идея, где я ошибаюсь? (Hibernate V 3.5.1-Final) –

+0

Привет, Паскаль, еще раз спасибо. К сожалению, я не могу заставить его работать. Ничего. Я работаю на станции Windows, и я дам ей еще одну попытку на машине Linux, чтобы убедиться, что она не имеет ничего общего с файловой системой. Я знаю, это не должно было быть так или иначе, но я столкнулся с большинством вещей в моей жизни ... –

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