Ну, есть пара вещей.
Я бы настоятельно не рекомендовал даже пытаться сделать это.Вы можете потратить впустую свою жизнь, разбираясь с аннотациями JPA и такими странными проблемами, которые, кажется, никогда не работают правильно.Вы также обнаружите, что разные JPA-провайдеры будут вести себя немного по-разному, когда речь идет о более сложных структурах, подобных этой, и это вдвойне выгодно для наследования.
Вам действительно намного лучше создать уникальный ключ для EXPECTED_SECURITY_RETURNSи просто живя с этим, это сделает вашу жизнь на Java намного проще.
Если у вас есть , чтобы сделать что-то подобное, я не удивлен, что JPA противится первичномуключевым компонентом будет другой объект объекта.Хотя это, конечно, вполне возможно в СУБД, но, по-видимому, такие мелочи могут сбить JPA.определение постоянства для большинства поставщиков JPA, конечно же, Ecpliselink и Hibernate).Я был бы готов поспорить, что он пытается запустить обновление EXPECTED_SEC_RET_TYPE_DECODE, и если нет, он может пытаться получить блокировку (таблицу, строку или другое в зависимости от вашей СУБД).Если у пользователя нет разрешения ни на выполнение блокировки, ни на обновление этой таблицы, в зависимости от точной реализации, запрос может завершиться ошибкой с разрешениями.
Для JPA целесообразно удерживать запросблокировка этой таблицы, поскольку существует вероятность того, что во время транзакции запись, на которую ссылается EXPECTED_SEC_RET_TYPE_DECODE, может измениться, поэтому она должна гарантировать, что она не будет обновляться / вставляться в другую таблицу.Последнее, что я проверил, нет никакого способа сказать JPA, что эта таблица по существу статична.Если вы используете Hibernate, вы можете попробовать аннотацию @ReadOnly, но в прошлом мало что я пробовал, чтобы обойти такие вещи.
Если вы найдете лучшее решение, не стесняйтесьопубликуйте это так, чтобы остальные могли учиться !!