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