在 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.xGenericModel 的一部分。因为,你使用 Play 2.x 你应该使用 JPA 对象和 entityManager.persist() 方法。

实际上...要在 play 2.x 中获取 entityManager,您需要一个 Helper。

JPA.em().persist(object);

您可以在此 link 中查看更多信息。