2015-01-07 3 views
0

У меня есть два класса: TranscriptionService и TranscriptionConfig.ManyToOne отношения со строковым полем

TranscriptionConfig имеет переменную serviceName, то есть строку, с сеттерами и геттерами.

TranscriptionService не имеет переменных или ссылок в классе до TranscriptionConfig.

Есть две таблицы базы данных: transcriptionConfig и transcriptionServices. transcriptionConfig имеет внешний ключ между его полем serviceName и name внутри transcriptionServices.

Администратор должен иметь возможность установить строковое значение serviceName внутри transcriptionConfig. Затем он ссылается на эквивалентную строку внутри name в transcriptionServices. Записи transcriptionServices в базе данных предварительно определены вручную, поэтому их никогда не нужно устанавливать с помощью объекта.

Мой текущий код зимуют внутри transcriptionConfig для serviceName выглядит следующим образом:

@ManyToOne 
@JoinColumn(name = "serviceName", nullable = false) 
private String transcriptionService; 

Однако, это не позволит мне сделать это, как String не является сущностью. Я пробовал добавить target-entity безрезультатно.

Похоже, что у него есть отношение manyToOne, ему нужно будет иметь экземпляр класса TranscriptionService, но я не хочу, чтобы transcriptionConfig содержал этот объект. Ему просто нужна ссылка на имена.

Как я могу использовать это отношение ManyToOne, но просто пропустите строку для имени?

ответ

1

Если вы рассматриваете этот столбец как строковое значение, вам не нужно определять отображение @ManyToOne и использовать @JoinColumn. Просто отметьте его @Column.

Вам понадобится, чтобы поймать SQLException в вашем DAO, чтобы справиться с ограничениями внешнего ключа.

Редактировать: Вы получаете это исключение, потому что у вас нет этого ключа в внешней таблице. Сначала вам нужно создать строку в таблице TranscriptionService.

+0

Я понимаю ошибку, которую я получаю, но я не вижу возможности ее поймать, поскольку фактическое исключение никогда не бросается? Помощник дает сообщение об ошибке, а затем спящий режим возвращает 403 запрещенных. У меня есть другая проверка, чтобы остановить строку от определенных вещей, но исключение проверки никогда не выбрасывается, поскольку помощник заставляет код останавливаться раньше ... Любые идеи? ('ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper ......') – fl0shizzle

+0

Вставьте где-нибудь свой код, где вы сохраняете() или обновляете() и полный стек. –

+0

Трассировка стека: https://paste.ee/p/uIlUj – fl0shizzle

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