Google app engine 使用JPA在GAE中插入不同类型的实体

Google app engine 使用JPA在GAE中插入不同类型的实体,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,我是GAE和数据存储的新手 我正在尝试使用JPA在GAE数据存储中插入不同类型的实体。 例如,我必须插入Employee、EmployeePersonalInfo(具有Employee键)、EmployeeAddressInfo(具有EmployeePersonalInfo键)。这里我没有在实体之间创建任何外键关系 public class Employee{ private String name; private Key key; } public class EmployeePerso

我是GAE和数据存储的新手

我正在尝试使用JPA在GAE数据存储中插入不同类型的实体。 例如,我必须插入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
我已经看到了很多解决这个问题的方法,但我无法理解真正的问题和方法是什么。请帮帮我