Spring Roo referencedColumnNames не сопоставлен ни с одним свойством - PullRequest
0 голосов
/ 11 сентября 2011

Я пытаюсь выполнить реверс-инжиниринг базы данных Roo, и у меня возникла проблема с моей первой реальной базой данных. Для этого вопроса я создал минимальный пример, показывающий проблему. В БД есть таблица sl_person, таблица sl_group и таблица мостов sl_person_group, так как человек может принадлежать к 0 или более группам.

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 Source Tool Suite: Файл -> Создать -> Проект -> Проект Spring Roo

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

Тогда я исправил небольшую проблему с таблицами стилей .

Однако, когда я пытаюсь запустить GlasshFish 3.1.1, приложение не запускается со следующей ошибкой.

ИНФОРМАЦИЯ: 2011-09-11 20: 42: 59,562 [admin-thread-pool-4848 (3)] ОШИБКА org.springframework.web.context.ContextLoader - Ошибка инициализации контекста org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именемactionactionManager определено в файле [/usr/local/glassfish3/glassfish/domains/domain1/eclipseApps/rooperson/WEB-INF/classes/META-INF/spring/applicationContext.xml]: Не удается разрешить ссылку на bean-компонент "entityManagerFactory" при установке свойства бина "entityManagerFactory"; Вложенным исключением является org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем entityManagerFactory, определенным в файле [/Usr/local/glassfish3/glassfish/domains/domain1/eclipseApps/rooperson/WEB-INF/classes/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;

Как я могу решить проблему? Если мне нужно предоставить больше информации, дайте мне знать.

1 Ответ

0 голосов
/ 14 марта 2013

Подобная проблема здесь. Кажется, в этой версии Roo есть проблема с составными первичными ключами (как в вашей таблице sl_person_group).

Хотя использование ключа для ссылки на один столбец предотвратит это, к сожалению, это, вероятно, не то, к чему призывает ваша модель данных.

...