У меня есть две таблицы, соединенные не первичными ключами. Этот SQL-запрос, как и ожидалось, выводит 3 значения.
Он ищет первичный ключ таблицы отдела. Department2_.deptno Поэтому я попробую @EmbeddedId.
@Angular_Newbie вы что-то нашли?
Да. У таблицы не было первичного идентификатора, поэтому я использовал ROWID в качестве первичного ключа, и он сработал ... черт ... лол. Спасибо.




Попробуйте следующее в операторе Where:
employee.emp_dept_code In(employee.department)
Обновлять
вы пытаетесь сравнить число с varchar2 в инструкции where.
Точно. Это то, что делает In (employee.department). Я переопределю equals и hashcode, а затем использую @EmbeddedId, поскольку эти 2 поля являются составными.
Вы должны сравнить число с числом или varchar2 с varchar2, иначе механизм БД будет спамить эту ошибку «ORA-01722: ошибка неверного номера» или что-то в этом роде, ваша ошибка находится в вашем операторе SQL, а не в весенних данных.
Да. Это в запросе. В (сотрудник. Отдел). Я считаю, что это соответствует идентификатору. @OneToMany (cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "Department") частный набор <Employee> employeeee = new HashSet <> (); Поэтому мне нужно создать встроенный идентификатор для сравнения.
Если вы работаете в операционной системе UNIX / LINUX, имена таблиц в MySQL чувствительны к регистру.
Поэтому я всегда рекомендую иметь имя таблицы в нижнем регистре для @Table(name = "<your_table>") и создавать таблицу со строчными буквами в запросе создания. Идея должна быть последовательной, если у вашей компании есть руководящие принципы.
Вы также можете сделать MySQL нечувствительным к регистру, следуя этот учебник
Спасибо, однако я уверен, что имена таблиц не проблема, так как я могу выполнять базовые запросы. Моя проблема - сопоставление сущностей JPA. Один ко многим Многие ко многим. Думаю, я на правильном пути. Я дам вам знать, что происходит.
У таблицы не было первичного идентификатора, поэтому я использовал ROWID в качестве первичного ключа, и это сработало. У объекта JPA нет первичного ключа?
Ваш столбец соединения должен быть emp_dept_code, не так ли?