Получение ORA-01722: недопустимый номер в запросе данных Spring

У меня есть две таблицы, соединенные не первичными ключами. Этот SQL-запрос, как и ожидалось, выводит 3 значения.

Он ищет первичный ключ таблицы отдела. Department2_.deptno Поэтому я попробую @EmbeddedId.

Ваш столбец соединения должен быть emp_dept_code, не так ли?

Compass 02.05.2018 20:04

@Angular_Newbie вы что-то нашли?

Vishrant 06.05.2018 20:30

Да. У таблицы не было первичного идентификатора, поэтому я использовал ROWID в качестве первичного ключа, и он сработал ... черт ... лол. Спасибо.

Angular_Newbie 15.05.2018 15:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
702
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте следующее в операторе Where:

employee.emp_dept_code In(employee.department)

Обновлять

вы пытаетесь сравнить число с varchar2 в инструкции where.

Точно. Это то, что делает In (employee.department). Я переопределю equals и hashcode, а затем использую @EmbeddedId, поскольку эти 2 поля являются составными.

Angular_Newbie 02.05.2018 20:31

Вы должны сравнить число с числом или varchar2 с varchar2, иначе механизм БД будет спамить эту ошибку «ORA-01722: ошибка неверного номера» или что-то в этом роде, ваша ошибка находится в вашем операторе SQL, а не в весенних данных.

Samuel Alencar 02.05.2018 20:35

Да. Это в запросе. В (сотрудник. Отдел). Я считаю, что это соответствует идентификатору. @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "Department") частный набор <Employee> employeeee = new HashSet <> (); Поэтому мне нужно создать встроенный идентификатор для сравнения.

Angular_Newbie 02.05.2018 20:38

Если вы работаете в операционной системе UNIX / LINUX, имена таблиц в MySQL чувствительны к регистру.

Поэтому я всегда рекомендую иметь имя таблицы в нижнем регистре для @Table(name = "<your_table>") и создавать таблицу со строчными буквами в запросе создания. Идея должна быть последовательной, если у вашей компании есть руководящие принципы.

Вы также можете сделать MySQL нечувствительным к регистру, следуя этот учебник

Спасибо, однако я уверен, что имена таблиц не проблема, так как я могу выполнять базовые запросы. Моя проблема - сопоставление сущностей JPA. Один ко многим Многие ко многим. Думаю, я на правильном пути. Я дам вам знать, что происходит.

Angular_Newbie 02.05.2018 20:47
Ответ принят как подходящий

У таблицы не было первичного идентификатора, поэтому я использовал ROWID в качестве первичного ключа, и это сработало. У объекта JPA нет первичного ключа?

Другие вопросы по теме