3

GAE とデータストアは初めてです

JPA を使用して GAE Datastore にさまざまなタイプのエンティティを挿入しようとしています。たとえば、Employee、EmployeePersonalInfo(Employee キーを持つ)、EmployeeAddressInfo(EmployeePersonalInfo キーを持つ) を挿入する必要があります。ここでは、エンティティ間の外部キー関係を作成していません。私のエンティティは次のようになります

public class Employee{

private String name;
private Key key;
}

public class EmployeePersonalInfo{
private String emailAddress;
private Key key;
private Key employeeKey;
}

public class EmployeeAddressInfo{
private String cityName;
private Key key;
private Key employeePersonalInfoKey;
}

i am trying to insert around 5 record on each table like

public class EmployeeController{

/*This method will be called for 5 times*/
public void insertEmployeeDetails(Employee emp,EmployeePersonalInfo perInfo,EmployeeAddressInfo addressInfo){
employeeDao.save(emp);
employeePersonalInfoDao.save(perInfo);
employeeAddressInfoDao.save(addressInfo);
}
}

呼び出しがDAOクラスのSaveメソッドに行くたびに、私はEntityManagerオブジェクトを開き、操作後に閉じます。

public void save(Employee emp){
        EntityManager em = EMFService.get().createEntityManager();
                em.save(emp);
                em.close();

}

ここで時々次のような例外が発生します

Caused by: java.lang.IllegalArgumentException: cross-group transaction need to be explicitly specified, see TransactionOptions.Builder.withXG

この問題に対する非常に多くの解決策を見てきましたが、本当の問題と解決策が何であるかを理解できません。私を助けてください

4

0 に答える 0