Могу ли я определить отношения в классе Entity, не имея их в базе данных? - PullRequest
0 голосов
/ 13 сентября 2010

Мне нужно написать приложение на Java EE6. Мне дали базу данных MySQL, в которую я не могу вносить какие-либо изменения. База данных хорошо структурирована и нормализована, но не имеет внешних ключей, определенных для обеспечения целостности. (Использует движок MyISAM).

Можно ли определить отношения (используя @JoinColumn, @ManyToOne и т. Д.) В классах объектов JPA без определения внешних ключей в базе данных?

Ответы [ 2 ]

2 голосов
/ 13 сентября 2010

Что вы подразумеваете под «отношениями» в базе данных? Если вы просто имеете в виду ограничения внешнего ключа (т. Е. У вас есть значения внешнего ключа, но нет ограничений), то они не нужны для определения отношений в JPA, просто используйте значения внешнего ключа.

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

1 голос
/ 13 сентября 2010

База данных хорошо структурирована, но не имеет определенных отношений (внешних ключей). (Использует движок MyISAM).

Внешние ключи используются для проверки и обеспечения ссылочной целостности, а не для объединения таблиц. Другими словами, использование таблиц MyISAM не мешает таблицам иметь отношения между ними.

Можно ли определить отношения (используя @JoinColumn, @ManyToOne и т. Д.) В классах сущностей JPA, фактически не имея их в базе данных?

Пока такие отношения существуют (независимо от наличия FK для обеспечения их целостности), вы можете использовать их для сопоставления ваших сущностей.

...