使用Spring Security&amp ;;进行单元测试时Hibernate,安全实体“用户”或“权限”都没有被自动处理。到目前为止我所做的是写一个“用户”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
);
问题:使用Hibernate / JPA2,为了创建代表此查询的BO,适当的语法是什么?
问题:实际上,我不想使用自己的BO创建条目。在测试运行期间,有任何更好的方法使Spring Security或Hibernate创建所有必需的表吗?
由于
答案 0 :(得分:1)
例如,将hibernate属性hibernate.hbm2ddl.auto
设置为update
。这应该让hibernate自动创建(和更新)需要的表。
<property name="hibernate.hbm2ddl.auto" value="update" />
答案 1 :(得分:1)
实际上,我不想使用自己的BO创建条目。在测试运行期间,有任何更好的方法使Spring Security或Hibernate创建所有必需的表吗?
如果您不打算使用Hibernate与这些表进行交互,那么为它们创建实体确实没什么意义。
因此,我的建议是将Spring Security表creation script放在import.sql
文件中,并将此文件放在类路径的根目录上,Hibernate会在模式导出后自动执行它。有关详细信息,请参阅Spring/Hibernate testing: Inserting test data after DDL creation(只需将DDL语句放在一行中)。
谢谢,Pascal,这正是我一直在寻找的,然而,它不起作用。我使用maven并将import.sql放入资源目录根目录(内容:CREATE TABLE justatest(aaa character varying(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