2010-08-14 2 views
2

Spring Security & Hibernate로 유닛 테스트를 시도 할 때 "user"또는 "authorities"보안 엔티티 중 어느 것도 자동 작성되지 않습니다. 지금까지 내가해온 것은 적절한 테이블을 생성하는 "사용자"bo를 작성하는 것입니다. 그러나, 나는 당국에 붙어 :테스트 도중 스프링 엔티티 "authority"자동 작성

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 
); 
(PostgreSQL을위한 http://java.dzone.com/articles/getting-started-spring에 의해 권고로)
  1. 질문 : 최대 절전 모드/JPA2으로 표현하는 BO를 만들기 위해 appropiate 구문은 무엇인가 이 쿼리?

  2. 질문 : 실제로, 나는 내 자신의 BO를 사용하여 항목을 만들고 싶지 않습니다. 테스트가 진행되는 동안 Spring Security 나 Hibernate가 필요한 모든 테이블을 생성하는 더 좋은 방법은 없을까요?

감사

+0

흠 무엇이 무엇입니까? – Bozho

+0

엔티티를 나타내는 My Business Object입니다. 내가 시도한 것은 두 가지 속성 (개인 문자열 사용자 이름; 개인 문자열 권한;)이있는 클래스입니다. 첫 번째 문제 : 컴파일 타임에 잘못된 ID 오류가 발생합니다. 다음으로 우리는 @ManyToOne 관계를 가지고 있습니다. authority.username :: users.username,하지만 String 타입이 필요합니다. Strings 콜렉션이 아닙니다 ... 이것은 제가 붙어있는 곳입니다. –

답변

1

예를 들어, update에 최대 절전 모드 속성 hibernate.hbm2ddl.auto을 설정합니다. 이렇게하면 최대 절전 모드에서 필요에 따라 테이블을 자동으로 생성 (및 업데이트) 할 수 있습니다.

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

안녕하세요. 조언 해주셔서 감사합니다. 그러나, 나의 1. 질문은 BO 코드를 언급합니다 - 나는 그 구속을 만드는 방법을 모른다. 예? –

1

사실, 난 내 자신의 BO를 사용하여 항목을 작성하고 싶지 않아요. 테스트가 진행되는 동안 Spring Security 나 Hibernate가 필요한 모든 테이블을 생성하는 더 좋은 방법은 없을까요?

최대 절전 모드를 사용하여 이러한 테이블과 상호 작용할 계획이 없다면 실제로 엔티티를 가질 수 없습니다.

그래서 스프링 보안 테이블 creation scriptimport.sql 파일에 넣고이 파일을 클래스 경로의 루트에 놓고 Hibernate가 스키마 내보내기 후에 자동으로 실행하게하는 것이 좋습니다. 자세한 내용은 Spring/Hibernate testing: Inserting test data after DDL creation을 참조하십시오 (한 줄에 DDL 문 넣기).


감사합니다, 파스칼, 이것은 내가 그러나, 그것은 작동하지 않습니다 찾고있는 것입니다. maven을 사용하고 import.sql을 리소스 루트에 넣습니다 (내용 : CREATE TABLE justatest (aaa character varying (50) NOT NULL);). 나는 또한 정한다. mvn 테스트를 실행하면 import.sql이 대상 디렉토리에 복사되지만 아무 일도 발생하지 않습니다. logback [debug]는 import.sql을 전혀 언급하지 않습니다. 내가 잘못 가고있는 어떤 생각? (최대 절전 V 3.5.1- 결승전)

나는이 특징을 Maven과 함께 사용하고 있는데, 나는 당신의 문제를 재현 할 수 없다. 나는 hbm2ddl.autocreate으로 설정 했으므로, 에 내 import.sql 파일이 있고 테스트를 실행할 때 스키마 내보내기가 끝날 때 예상대로 실행됩니다. 다음은 로그백을 사용하여 얻은 로그 항목입니다 :

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 varying (50) NOT NULL);). 나는 또한 를 설정했다. mvn 테스트를 실행하면 import.sql이 대상 디렉토리에 복사되지만 아무 일도 발생하지 않습니다. logback [debug]는 import.sql을 전혀 언급하지 않습니다. 내가 잘못 가고있는 어떤 생각? (Hibernate V 3.5.1-Final) –

+0

안녕, 파스칼, 다시 한번 감사드립니다. 불행히도, 나는 그것을 작동시킬 수 없다. 어쨌든 신경 쓰지 마라. 나는 윈도우 스테이션에서 일하고 있는데, 리눅스 시스템에서 파일 시스템과 아무런 관련이 없는지 확인하기 위해 다시 시도 할 것이다. 나도 알아, 어쨌든해서는 안된다.하지만 나는 내 인생에서 가장 많은 curiouse 것들을 만났다. –