Я разрабатываю приложение ETL с использованием Spring. У меня есть данные, которые нужно вставить в тип String, и я хочу загрузить данные с помощью entityManager.createNativeQuery (query) .executeUpdate () У меня нет никакой сущности, поскольку приложение ETL можно использовать для любого источника данных.
Чтобы продемонстрировать проблему:
Исходные данные могут быть любыми действительными JSON например {name: "John", age: 31, city: "New York"}
Само приложение генерирует запрос INSERT отсюда, например: INSERT INTO TABLE_NAME (Name, Age, City) values ('John',31,'New York')
Я использую @PersistenceContext EntityManager em
для подключения к Oracle 12 c. Таким образом, запуск em.createNativeQuery (query) .executeUpdate выполняет эту работу за меня.
Однако, когда я пытаюсь использовать собственный индекс в целевой таблице, я не могу найти правильный метод выполнения так.
Я пробовал использовать класс KeyHolder, но он работает с JdbcTemplate, а не с EntityManager
KeyHolder keyHolder = new GeneratedKeyHolder();
Я не могу использовать
em.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(entity);
, так как я не могу создайте здесь объект.
Каким будет правильный метод создания здесь собственного уникального ключа?