Spring Data Jpa save()メソッドを使用してエンティティをデータベースに保存しています。このメソッドは保存されたエンティティオブジェクトを返しますが、新しいエンティティを保存する場合、返されたオブジェクトは@ManyToManyの完全なエンティティなどで埋められません。Spring Data JPAは新しいEntityを保存し、すべての依存関係を取得します
私が知っている限り、Spring Data JPAは新しいエンティティを保存するときにはentityManager.persist()メソッドを使用し、エンティティがデータベースに存在する場合、save()メソッドはentityManager.merge()メソッドを使用します。
私の質問は、データベースに新しいエンティティを保存し、1つのトランザクションで完全な依存関係を取得する方法です。
私は豆のサービスのように、延びていることが、いくつかのヘルパークラスを追加しようとしていた。
public abstract class HelperPersistenceService<E extends AbstractEntity<I>, I extends Serializable> {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public E saveWithMerge(E e) {
if (e.getId() == null) {
entityManager.persist(e);
}
return entityManager.merge(e);
}
}
、それは@Transactional方法なしで動作します。しかし、今私は例外を持っています:
javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'persist' call
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:278)
at com.sun.proxy.$Proxy778.persist(Unknown Source)
この問題を解決するには?