2011-09-11 35 views
0

我想袋鼠數據庫逆向工程和我有一個問題,我的第一個真正的數據庫。對於這個問題,我創建了一個顯示問題的最小示例。在DB中,有一個sl_person表是sl_group表和sl_person_group橋表,因爲一個人可以屬於0個或多個組。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`); 

在Eclipse中創建一個新的Spring Roo項目,春源工具套件:文件 - >新建 - >項目 - > Spring Roo的項目

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

然後在小豆殼I型:

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:59,562 [admin-thread-pool-4848(3)] ERROR org.springframework.web.context.ContextLoader - 上下文初始化失敗 org.springframework.beans.factory在文件[/usr/local/glassfish3/glassfish/domains/domain1/eclipseApps/rooperson/WEB-INF/classes/META-INF/spring/applicationContext.xml]中定義錯誤創建名爲「transactionManager的」 豆:.BeanCreationException: 設置bean屬性'entityManagerFactory'時無法解析對bean'entityManagerFactory'的引用; 嵌套異常是org.springframework.beans.factory.BeanCreationException:名爲 '的entityManagerFactory' 在文件中定義 [/ USR /本地/ glassfish3 /的glassfish /域/域1/eclipseApps/rooperson/WEB-INF /類 錯誤創建豆/META-INF/spring/applicationContext.xml]: 調用init方法失敗;嵌套的異常是org.hibernate.AnnotationException:referencedColumnNames(id_group)的org.obliquid.rooperson.domain.SlPersonGroup.idGroup引用org.obliquid.rooperson.domain.SlGroup未映射到在org.springframework單個屬性 。 beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)

生成的文件SlPersonGroup_Roo_DbManaged.aj開頭:

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; 

我怎樣才能解決這個問題?如果我應該提供更多信息,請告訴我。

+0

具有相同的問題。你弄明白了嗎?如果是這樣,如果你願意分享,會很樂意。 – 2011-10-18 17:36:01

+0

不,我沒有...當Roo 1.2出來時我會再試一次。 – stivlo

回答

-2
這裏

類似的問題。看來Roo的這個版本在組合主鍵上存在問題(如在你的sl_person_group表中)。

同時使鍵指一列將阻止這種情況發生,不幸的是它可能不是你的數據模型要求的東西。

相關問題