我有一个 MySQL 模型,其中包含 2 个表Empresa(公司)和Ruta(路线),它们之间的1:N
关系。我正在使用 NetBeans 进行开发。
在运行我的应用程序之前,在 MySQL 命令行中,我输入:
describe ruta;
我的表 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
是表Ruta中表Empresa和FK的PK。然后,随着我的应用程序运行,当我输入
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;
}
}
对这个问题有任何想法吗?