Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
播放框架上的JPA@ElementCollection错误_Jpa_Playframework - Fatal编程技术网

播放框架上的JPA@ElementCollection错误

播放框架上的JPA@ElementCollection错误,jpa,playframework,Jpa,Playframework,我已经创建了一个播放应用程序,并有一些模型。其中一个包含对象集,但jpa无法创建表 package models; import java.util.ArrayList; import java.util.Date; import java.util.Map; import java.util.Set; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persi

我已经创建了一个播放应用程序,并有一些模型。其中一个包含对象集,但jpa无法创建表

package models;

import java.util.ArrayList;
import java.util.Date;
import java.util.Map;
import java.util.Set;

import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Table;

import play.db.jpa.Model;

@Entity
public class Receipt extends Model {

    @ElementCollection
    Set<Serving> servings;
    DiningTable table;

    public Receipt(Set<Serving> servings, DiningTable table) {
        super();
        this.servings = servings;
        this.table = table;
    }

}
封装模型;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.Map;
导入java.util.Set;
导入javax.persistence.ElementCollection;
导入javax.persistence.Entity;
导入javax.persistence.Table;
导入play.db.jpa.Model;
@实体
公共类接收扩展模型{
@元素集合
设置服务;
餐桌;
公共收据(套餐、餐桌){
超级();
这个。份数=份数;
this.table=表格;
}
}
错误是

21:20:47,323 INFO ~ Listening for HTTP on port 9000 (Waiting a first request to start) ... 21:20:51,935 INFO ~ Connected to jdbc:mysql://localhost/rms_?>useUnicode=yes&characterEncoding=UTF-8&connectionCollation=utf8_general_ci 21:20:52,827 ERROR ~ Unsuccessful: create table Receipt (id bigint not null auto_increment, >table tinyblob, primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 21:20:52,827 ERROR ~ You have an error in your SQL syntax; check the manual that >corresponds to your MySQL server version for the right syntax to use near 'table tinyblob, >primary key (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 1 21:20:53,183 ERROR ~ Unsuccessful: alter table Receipt_Serving add index FKB18778C559F3AF16 >(Receipt_id), add constraint FKB18778C559F3AF16 foreign key (Receipt_id) references Receipt >(id) 21:20:53,183 ERROR ~ Can't create table 'rms_.#sql-731_f2' (errno: 150) 21:20:53,414 INFO ~ Application 'rms' is now started ! 21:20:47323信息~正在端口9000上侦听HTTP(等待启动第一个请求)。。。 21:20:51935信息~已连接到jdbc:mysql://localhost/rms_?>useUnicode=yes&characterEncoding=UTF-8&ConnectionCallation=utf8\u general\u ci 21:20:52827错误~不成功:创建表格收据(id bigint not null自动增量,>表格tinyblob,主键(id))引擎=InnoDB默认字符集=utf8 21:20:52827错误~您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,了解第1行“table tinyblob,>主键(id))ENGINE=InnoDB DEFAULT CHARSET=utf8”附近要使用的正确语法 21:20:53183错误~失败:更改表Receipt\u服务添加索引FKB18778C559F3AF16>(收据\u id),添加约束FKB18778C559F3AF16外键(收据\u id)引用收据>(id) 21:20:53183错误~无法创建表“rms.#sql-731_f2”(错误号:150) 21:20:53414信息~应用程序“rms”现在已启动!
如何解决此问题?

是保留关键字。通过更改字段名或添加以下内容,尝试使用其他列名:

@Column(name="diningTable")

此外,我怀疑您希望DiningTable是一个实体,而不是存储为字节码(tinyblob)。如果是这样,您应该添加一些关系注释

哪些关系注释?像manytoone或manytomany?因为收据上的表格上没有集合,所以它将是\@manytoone。您确定要在您的服务中使用\@ElementCollection吗?它是一个\@可嵌入的,您永远不想单独查询吗?也许你应该考虑一下“OneToMany”?