Я хотел бы продолжить использовать DAO, которую я создал, под Spring-boot 2.1.1
(с сущностями и JPA
), в то время как я также использую Spark 2.4.0
.
Если я выполню RDD, соберу некоторые из его результатов и перейду к методу службы, оканчивающемуся в моем DAO, все в порядке. Мои записи хорошо написаны. Но это не ненормально: я делаю мой звонок в простой среде Spring-boot. Тем не менее, если я попытаюсь сделать это в середине операции RDD, это не удастся. Например, я пытаюсь сделать это:
myRDD.groupByKey(..).forEach(candidate -> myDAO.save(candidate));
Если в моем DAO используется @Autowired EntityManager
, базовый класс с именем SharedEntityManagerCreator
завершается неудачно с нечетным сообщением о том, что AdviceBeanName не был установлен, когда вызывается сервисный метод, содержащий аннотацию @Transaction
(тот, который будет вызывать мой ДАО).
Если мой DAO использует @Autowired EntityFactoryManager
, он должен сам управлять транзакцией с помощью EntityManager
, созданного из него. Иначе, функция persist
жалуется на отсутствие транзакции. Однако, если кажется, что все работает хорошо, в конечном итоге ничего не фиксируется, и мои таблицы остаются пустыми.
Есть ли несколько советов, которые нужно знать, прежде чем пытаться использовать JPA
с Spark
?
Или я обречен на неудачу, потому что при выполнении операций RDD Spark
переводит систему в состояние, в котором среда Spring
больше не имеет константы?
С уважением,