【发布时间】:2013-03-22 17:46:03
【问题描述】:
我有一个 MySQL 模型,有 2 个表 Empresa(公司)和 Ruta(路线),1:N 它们之间的关系。我正在使用 NetBeans 进行开发。
在运行我的应用程序之前,在 MySQL 命令行中输入:
describe ruta;
我的表有 3 个字段:
idRuta -- int(10) unsigned -- NONULL -- PK -- DEFAULTNULL -- AUTOINC
zona -- varchar(45) -- NO NULL -- DEFAULTNULL --
idEmpresa -- int(11) -- NONULL -- KEYMUL -- DEFAULTNULL
当我运行我的 webapp 时,在添加任何对象之前,日志说:
[...]
17:32:39,163 INFO ~ Connected to jdbc:mysql://localhost:3306/opticaDB
17:32:41,021 ERROR ~ Unsuccessful: alter table Ruta add index FK270C1013017BBD (empresa_idEmpresa), add constraint FK270C1013017BBD foreign key (empresa_idEmpresa) references Empresa (idEmpresa)
17:32:41,021 ERROR ~ Can't create table 'opticadb.#sql-b0c_10' (errno: 150)
17:32:41,344 INFO ~ Application 'Optica2.0' is now started !
17:32:55,235 WARN ~ SQL Error: 1364, SQLState: HY000
17:32:55,235 ERROR ~ Field 'idEmpresa' doesn't have a default value
[...]
idEmpresa 是表 Empresa 的 PK 和表 Ruta 中的 FK。然后,在我的应用程序运行时,当我键入时
describe ruta;
我的表 ruta 有四个字段:
idRuta -- int(10) unsigned -- NONULL -- PK -- DEFAULTNULL -- AUTOINC
zona -- varchar(45) -- NONULL -- DEFAULTNULL --
idEmpresa -- int(11) -- NONULL -- KEYMUL -- DEFAULTNULL
empresa_idEmpresa -- bigint(20) -- YESNULL -- DEFAULTNULL
我的模型是这样的:
型号:Empresa
package models;
import play.*;
import java.util.*;
import javax.persistence.*;
import play.db.jpa.*;
import play.data.validation.*;
@Entity
public class Empresa extends GenericModel {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
public Long idEmpresa;
public String nombre;
public Integer telefono;
public String web;
public String direccion;
public String toString() {
return nombre;
}
}
型号:芸香
package models;
import play.*;
import java.util.*;
import javax.persistence.*;
import play.db.jpa.*;
import play.data.validation.*;
@Entity
public class Ruta extends GenericModel {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
public Long idRuta;
public String zona;
@ManyToOne
public Empresa empresa;
@Override
public String toString(){
return zona;
}
}
对这个问题有任何想法吗?
【问题讨论】:
-
为什么你继承自
play.db.jpa.GenericModel而不是play.db.jpa.Model?如果没有特别的原因,试试Model看看是否有效。 -
因为从 .Model 继承不允许您创建自己的 @Id 字段。我之前问过,你在这里:[link]stackoverflow.com/questions/15053253/crud-module-play-1-2-4[/…
标签: mysql jpa playframework