2011-09-11 5 views
0

Roo 데이터베이스 리버스 엔지니어링을 시도하고 있으며 첫 번째 실제 데이터베이스에 문제가있었습니다. 이 질문에 대해서는 문제를 보여주는 최소한의 예를 만들었습니다. DB에는 사람이 0 개 이상의 그룹에 속할 수 있기 때문에 sl_person 테이블 인 sl_group 테이블과 브리지 테이블 sl_person_group이 있습니다. 이클립스에서 Spring Roo referencedColumnNames가 하나의 속성에 매핑되지 않았습니다.

CREATE DATABASE `rooperson` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

CREATE TABLE IF NOT EXISTS `sl_group` (
`id_group` int(11) NOT NULL DEFAULT '0', 
`name` varchar(80) NOT NULL, 
`description` text, 
UNIQUE KEY `id_group_idx` (`id_group`), 
UNIQUE KEY `name` (`name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE IF NOT EXISTS `sl_person` (
`id_person` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(64) DEFAULT NULL, 
`surname` varchar(64) DEFAULT NULL, 
PRIMARY KEY (`id_person`), 
KEY `name` (`name`), 
KEY `surname` (`surname`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5727 ; 

CREATE TABLE IF NOT EXISTS `sl_person_group` (
`id_person` int(11) NOT NULL DEFAULT '0', 
`id_group` int(11) NOT NULL DEFAULT '0', 
UNIQUE KEY `id_person_group_idx` (`id_person`,`id_group`), 
KEY `id_group` (`id_group`) 
) ENGINE=InnoDB DEFAULT CHARSET; 

ALTER TABLE `sl_person_group` 
ADD CONSTRAINT `sl_person_group_ibfk_2` FOREIGN KEY (`id_group`) REFERENCES `sl_group` (`id_group`), 
ADD CONSTRAINT `sl_person_group_ibfk_1` FOREIGN KEY (`id_person`) REFERENCES `sl_person` (`id_person`); 

나는 스프링 소스 툴 스위트와 함께 새로운 봄 캥거루 프로젝트를 생성 : 파일 -> 새로 만들기 -> 프로젝트 -> 봄 캥거루 프로젝트

Project Name: rooperson 
Top level package name: org.obliquid.rooperson 
Next -> Finish 

그런 다음 루 쉘에서 내가 입력 :

persistence setup --database MYSQL --provider HIBERNATE 
database properties set --key database.password --value xxxxx 
database properties set --key database.username --value rooperson 
database properties set –key database.url –value jdbc:mysql://localhost/rooperson?zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8 
database reverse engineer --schema PUBLIC --package org.obliquid.rooperson.domain 
web mvc setup 

그러면 a small problem with stylesheets으로 고정되었습니다.

그러나 GlasshFish 3.1.1을 시작하려고하면 응용 프로그램이 다음 오류로 시작하지 않습니다.

INFO : 2011-09-11 20 : 42 : 59562 [관리 스레드 풀-4848 (3)] ERROR org.springframework.web.context.ContextLoader - 콘텍스트 초기화 실패 org.springframework.beans.factory .BeanCreationException : 'transactionManager'라는 이름의 bean을 생성하는 중 오류가 발생했습니다. [/usr/local/glassfish3/glassfish/domains/domain1/eclipseApps/rooperson/WEB-INF/classes/META-INF/spring/applicationContext.xml] 파일에 정의되어 있습니다. 빈 속성 'entityManagerFactory'를 설정하는 동안 'entityManagerFactory'bean에 대한 참조를 확인할 수 없습니다. 중첩 예외는 org.springframework.beans.factory.BeanCreationException : 파일 '[/ usr/local/glassfish3/glassfish/domains/domain1/eclipseApps/rooperson/WEB-INF/classes]에 정의 된 이름'entityManagerFactory ' /META-INF/spring/applicationContext.xml] : init 메소드를 호출하지 못했습니다. 중첩 예외는 org.hibernate.AnnotationException : referencedColumnNames (id_group) of org.obliquid.rooperson.domain.SlPersonGroup.idGroup을 참조하는 org.obliquid.rooperson.domain.SlGroup은 단일 속성 에서 org.springframework로 매핑되지 않습니다.

privileged aspect SlPersonGroup_Roo_DbManaged { 

    @ManyToOne 
    @JoinColumn(name = "id_group", referencedColumnName = "id_group", nullable = false, insertable = false, updatable = false) 
    private SlGroup SlPersonGroup.idGroup; 

    @ManyToOne 
    @JoinColumn(name = "id_person", referencedColumnName = "id_person", nullable = false, insertable = false, updatable = false) 
    private SlPerson SlPersonGroup.idPerson; 

가 어떻게이 문제를 해결할 수

: beans.factory.support.BeanDefinitionValueResolver.resolveReference (BeanDefinitionValueResolver.java:328는)

생성 된 파일 SlPersonGroup_Roo_DbManaged.aj로 시작? 더 많은 정보를 제공해야한다면 알려주세요.

+0

동일한 문제가 있습니다. 알아 냈어? 그렇다면 공유하는 것을 좋아합니다. –

+0

아니요, 저는 ... Roo 1.2가 나올 때 다시 시도 할 것입니다. – stivlo

답변

-2

비슷한 문제가 있습니다. 이 버전의 Roo는 복합 기본 키 (sl_person_group 테이블에서와 같이)에 문제가있는 것 같습니다.

키를 하나의 열로 참조하면이 문제가 발생하지 않게되지만 유감스럽게도 데이터 모델에서 요구하는 것이 아닙니다.

관련 문제