2014-01-13 3 views
0

Я пытаюсь связать объекты из одной таблицы с двумя другими с помощью ключей foriegn. Мои Таблицы:EJB multiple FK не работает

пользователя -> идентификатор (рк), имя пользователя, пароль, пол (Ф.К.), возраст (Ф.К.)

пол -> идентификатор (рк), пол

возрастная группа -> идентификатор (рк), группа

все идентификаторы INT (11), а все остальные столбцы VARCHAR

пользователь имеет столбцы гендерно & возраста, который удерживает целое число, которое является первичным ключом из соответствующих таблиц. Все таблицы InnoDB & Я связал их через phpmyadmin, используя вид отношений (найденный здесь). Рассматривая базу данных через представление JPA в Eclipse, они правильно аннотируются с помощью FK.

Я генерирую сущности из меню и настраиваю так, чтобы мой пользовательский объект имел отношения ManyToOne, настроенные для обоих полей, которые я хочу. У меня есть класс пользователей, который я создаю из своего сервлета, добавляя пользователя в качестве параметра к запросу и получая доступ в файле jsp для записи значений на страницу. Я хочу напечатать имена пользователей своей возрастной группы и их пола на странице.

${user.getUsername()} 
${user.getGenderBean().getGender()} 
${user.getAgegroup().getGroup()} 

, когда у меня есть все три в JPA, я получаю только имя пользователя, напечатанное на странице. Как ни странно, если я повторно делаю сущности и не настраиваю возрастную группу, то пол печатается. Это не так. Порядок выше - то, как они используются. GenderBean был сгенерирован один раз, когда я случайно создал двунаправленное отношение, но имя палочки, даже когда я создаю способ, которым я хочу его, то есть однонаправленный.

Я использую Eclipse, Kepler, GlassFish, 4, MySql 5.5.31 & EclipseLink

Я получаю ошибку синтаксиса SQL следующим:

SELECT ID, RANGE FROM agegroup WHERE (ID = ?) 

Я изменил groupt ранжировать только в случае возникновения недоразумений ключевых слов происходило. Является ли тот факт, что ID и RANGE имеют верхний регистр, что-то связано с ним, поскольку они не названы таким образом. Я создал все мои имена столбцов в нижнем регистре.

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно здесь?

+0

Если дело было проблемой, я предполагаю, что у вас есть другие поля, которые не совпадают с User и Gender, но поэтому это не должно влиять на AgeGroup. Обе группы и диапазон являются ключевыми словами в MySQL, поэтому вы можете попробовать что-то еще и посмотреть журналы для исключений - включите ведение журнала EclipseLink и следите за исключениями. Если это не помогает, требуется дополнительная информация, чтобы помочь вам определить, что происходит, например код для сущностей и ошибки в журналах. – Chris

ответ

0

Спасибо, Крис, это было использование группы/диапазона, которая вызвала мою проблему.

Смежные вопросы