У меня есть две разные базы данных D1, D2 с одной и той же таблицей T.
T имеет идентификатор столбца первичного ключа, который автоматически генерируется в D1, простое целое число в D2. Мне нужно сместить запись с T в D1 на T в D2, поэтому я сопоставил T как @Entity с JPA. Проблема в том, что @ID — это @GeneratedValue(strategy = GenerationType.IDENTITY) для D1, но не для D2.
Есть ли решение не дублировать Entity? Я заметил, что при использовании @MappedSuperclass мне нужен столбец @Id, но в моем случае это то, что я пытаюсь специализировать. Единственное решение, которое я нашел, - создать два разных класса, ссылающихся на одну и ту же таблицу, которые идентичны, за исключением @id... что-нибудь лучше?
(если я использую общий абстрактный класс, у меня возникают проблемы при определении @NamedQueries, потому что кажется, что на унаследованное поле нельзя ссылаться (SELECT m FROM Specialized m WHERE m.aBaseField=:aBaseField) вернуть исключение: «Путь к полю состояния» m.aBaseField' не может быть разрешен к допустимому типу."