【问题标题】:Error when creatin SQL table. Eban classes创建 SQL 表时出错。伊班班
【发布时间】:2015-03-16 09:15:16
【问题描述】:

我尝试创建一个Transaction SQL 表,其中包含来自其他两个表的两个外键:UserCar
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


【解决方案1】:
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))

错误是使用 FROM 作为列名。 FROM 是保留字,绝对没有理由使用保留字作为列名http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html。所以只需选择一个不是保留字的名称。

【讨论】:

  • 我认为 transactions 是保留名称,我专注于这个词。比寻求帮助!
  • 我也会避免使用这样的名称,以免其他人以后误读。
猜你喜欢
  • 2016-01-08
  • 2022-01-14
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 2014-09-15
  • 1970-01-01
相关资源
最近更新 更多