【发布时间】:2015-03-16 09:15:16
【问题描述】:
我尝试创建一个Transaction SQL 表,其中包含来自其他两个表的两个外键:User 和Car。
Car.java
@Entity
public class Car extends Model{
@Id
@GeneratedValue
public int id;
@ManyToOne
@JoinColumn(name="user_fk")
public User user;
@OneToOne(cascade=CascadeType.ALL, mappedBy="car")
public Transaction transaction;
}
User.java
@Entity
public class User extends Model{
@Id
@GeneratedValue
public int id;
@OneToMany(cascade=CascadeType.ALL, mappedBy="user") // If we delete a user, all the object belongs to this user are deleted.
public List<Car> cars = new ArrayList<Car>();
@OneToOne(cascade=CascadeType.ALL, mappedBy="user")
public Transaction transaction;
}
Transaction.java
@Entity
@Table(name = "transactions")
public class Transaction extends Model{
@Id
@GeneratedValue
public int id;
@OneToOne
@JoinColumn(name = "user_fk")
public User user;
@OneToOne
@JoinColumn(name = "car_fk")
public Car car;
}
这是生成的transactions 表脚本
create table transactions (
id integer not null,
user_fk integer,
car_fk integer,
from timestamp,
to timestamp,
availability boolean,
constraint pk_transactions primary key (id))
alter table transactions add constraint fk_transactions_user_4 foreign key (user_fk) references user (id) on delete restrict on update restrict;
create index ix_transactions_user_4 on transactions (user_fk);
alter table transactions add constraint fk_transactions_car_5 foreign key (car_fk) references car (id) on delete restrict on update restrict;
create index ix_transactions_car_5 on transactions (car_fk);
我收到以下错误:
SQL 语句中的语法错误“CREATE TABLE TRANSACTIONS (ID INTEGER 非空,USER_FK 整数,CAR_FK 整数,FROM[*] TIMESTAMP,到 时间戳、可用性布尔值、约束 PK_TRANSACTIONS PRIMARY KEY (ID)) "; 预期的 "标识符"; SQL 语句:创建表 交易(id 整数不为空,user_fk 整数,car_fk 整数, 从时间戳,到时间戳,可用性布尔值,约束 pk_transactions 主键(id))[42001-175] [错误:42001, SQLSTATE:42001],尝试运行此 SQL 脚本时
我做错了什么?
【问题讨论】:
-
使用反引号避免保留字
标签: java mysql playframework ebean playframework-2.3