2011-09-11 2 views
0

にマップされていない私は、Rooのデータベースリバースエンジニアリングをしようとしていますし、私は私の最初の本当のデータベースに問題がありました。この質問では、問題を示す最小限の例を作成しました。 DBには、sl_personテーブルsl_groupテーブルとブリッジテーブルsl_person_groupがあります。これは、人が0つ以上のグループに属している可能性があるためです。 Eclipseで春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`); 

私は春のソースツールスイートで新しい春Rooのプロジェクトを作成します。ファイル - >新規 - >プロジェクト - >春Rooのプロジェクト

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

それから私は入力しROOシェルで:

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]: beanプロパティ '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メソッドの呼び出しに失敗しました。 referencedColumnNames(id_group)org.obliquid.rooperson.domain.SlPersonGroup.idGroupがorg.obliquid.rooperson.domain.SlGroup org.springframeworkにおける単一のプロパティ にマッピングされていない参照の :ネストされた例外は、org.hibernate.AnnotationExceptionあります。 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

同じ問題があります。あなたはそれを把握しましたか?もしそうなら、もしあなたが分かれば大好きです。 –

+0

いいえ、私はしませんでした... Roo 1.2が出てくるときにもう一度試してみます。 – stivlo

答えて

-2

同様の問題がここに。このバージョンのRooは、複合主キー(sl_person_groupテーブルのように)に問題があるようです。

キーは、単一の列を参照し作成しているときには、残念ながら、それはあなたのデータモデルは、のために呼んでいるものはおそらくありませんが、起きてからこれを停止します。

関連する問題