在 Play 中使用 save() 方法!继承(JPA)
Use save() method in Play! with inheritance (JPA)
我有我的超级摘要 class :
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class User {
@Id
public int id;
public String name;
}
和另外两个 classes 扩展用户:
客户
@Entity
@Table(name = "customers")
public class Customer extends User{
@Id
public int id;
public String role;
public Customer(String role){
super();
this.role = role;
}
}
卖家
@Entity
@Table(name = "sellers")
public class Seller extends User{
@Id
@GeneratedValue
public int id;
public String role; // Seller
public Seller(String role){
super();
this.role = role;
}
}
我希望能够在游戏中使用 save() 方法,所以我这样写:
public static Result saveCustomer(){
Customer customer = Form.form(Customer.class).bindFromRequest().get();
customer.save();
return ok();
}
但是,save() 未定义。
解决这个问题的方法是什么?
save()
方法是属于 Play 1.x
的 GenericModel
的一部分。因为,你使用 Play 2.x
你应该使用 JPA
对象和 entityManager.persist()
方法。
实际上...要在 play 2.x 中获取 entityManager,您需要一个 Helper。
JPA.em().persist(object);
您可以在此 link 中查看更多信息。
我有我的超级摘要 class :
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class User {
@Id
public int id;
public String name;
}
和另外两个 classes 扩展用户:
客户
@Entity
@Table(name = "customers")
public class Customer extends User{
@Id
public int id;
public String role;
public Customer(String role){
super();
this.role = role;
}
}
卖家
@Entity
@Table(name = "sellers")
public class Seller extends User{
@Id
@GeneratedValue
public int id;
public String role; // Seller
public Seller(String role){
super();
this.role = role;
}
}
我希望能够在游戏中使用 save() 方法,所以我这样写:
public static Result saveCustomer(){
Customer customer = Form.form(Customer.class).bindFromRequest().get();
customer.save();
return ok();
}
但是,save() 未定义。
解决这个问题的方法是什么?
save()
方法是属于 Play 1.x
的 GenericModel
的一部分。因为,你使用 Play 2.x
你应该使用 JPA
对象和 entityManager.persist()
方法。
实际上...要在 play 2.x 中获取 entityManager,您需要一个 Helper。
JPA.em().persist(object);
您可以在此 link 中查看更多信息。