我正在使用Play框架1.2.4,我正在准备一个订餐系统。所以我想把它们放在地图上。
package models;
import java.util.ArrayList;
import java.util.Date;
import java.util.Map;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
import play.db.jpa.Model;
@Entity
public class Order extends Model{
Map<Item, Float> orders;
Table table;
Date date;
public Order(Map<Item, Float> orders, Table table) {
super();
this.orders = orders;
this.table = table;
date = new Date();
}
}
但是,当我启动应用程序时,它会出现此错误,
JPA错误 发生JPA错误(无法构建EntityManagerFactory):无法确定类型:java.util.Map,在表:订单,列:[org.hibernate.mapping.Column(orders)]
我如何存储1 porsion pizza,1.5 porsion soup等订单。
答案 0 :(得分:2)
如果您希望由jpa管理
,则需要对地图进行注释@ElementCollection
Map<Item, Float> orders;
答案 1 :(得分:1)
您必须使用@Table注释更改实体Order的表名。在许多DBMS中,“order”是一个保留字。
@Entity
@Table(name="apporder")
public class Order extends Model {
// ...
}
关于订单商品:您需要其他实体来存储此数据。例如:
package models;
import java.util.*;
import javax.persistence.*;
import play.db.jpa.*;
import play.data.validation.*;
@Entity
public class OrderItem extends Model {
@ManyToOne
public Order order;
@ManyToOne
public Item item;
public Float qty;
}
答案 2 :(得分:1)
使用 float (帮助数量)和项目(正在投放的内容)添加服务类。然后将 Set&lt; Serving&gt; 添加到Order类。对于这样的信息,比地图更有意义。