java - Hibernate 中的日期注解

标签 java mysql database hibernate annotations

我有一个具有以下关系的数据库模式:relations

所以我已经创建了所有类,并尝试向其中插入一些值。我遇到的问题是 Reservation 类,它包含 Date 字段(从,到)。

package mapping;

import javax.persistence.*;
import java.util.*;

@Entity
@Table(name="Reservation")
public class Reservation {

private int id;
private Date from;
private Date to;
private Account purchaser;
private State state;
private House house;

public Reservation()
{

}

public Reservation(Date from, Date to)
{
    this.from = from;
    this.to = to;
}
@Id
@GeneratedValue
@Column(name="id")
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}

@Column(name="from")
@Temporal(TemporalType.DATE) 
public Date getFrom() {
    return from;
}
public void setFrom(Date from) {
    this.from = from;
}

@Column(name="to")
@Temporal(TemporalType.DATE) 
public Date getTo() {
    return to;
}
public void setTo(Date to) {
    this.to = to;
}

@ManyToOne
@JoinColumn(name="purchaser_id")
public Account getPurchaser() {
    return purchaser;
}
public void setPurchaser(Account purchaser) {
    this.purchaser = purchaser;
}

@ManyToOne
@JoinColumn(name="state_id")
public State getState() {
    return state;
}
public void setState(State state) {
    this.state = state;
}

@ManyToOne
@JoinColumn(name="house_id")
public House getHouse() {
    return house;
}
public void setHouse(House house) {
    this.house = house;
}
}

和主要功能:

package client;

import java.util.Calendar;
import java.util.Date;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

import mapping.Account;
import mapping.HibernateUtil;
import mapping.House;
import mapping.Reservation;
import mapping.State;
import mapping.Type;


public class Main {

public static void main(String[] args)
{
    SessionFactory sf = HibernateUtil.getSessionFactory();
    Session session = sf.openSession();
    session.beginTransaction();

    State state = new State("free");
    session.save(state);

    State state2 = new State("reserved");
    session.save(state2);

    Type type = new Type("flat house");
    session.save(type);

    Account temp = new Account("acc1","acc1","acc1@gmail.com","acc1","acc1");
    temp.setType(type);
    session.save(temp);

    House house1 = new House("house1",120,"house1 Address",100000,"house");
    house1.setState(state);
    house1.setOwner(temp);
    house1.setType(type);

    session.save(house1);

    Reservation res = new Reservation(new Date(),new Date());
    res.setHouse(house1);
    res.setPurchaser(temp);
    res.setState(state2);

    session.save(res);


    session.getTransaction().commit();
    session.close();
    sf.close();

    System.exit(0);
}
}

但是当我编译它时出现这个错误:

WARN: SQL Error: 1064, SQLState: 42000 sty 08, 2017 5:25:34 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 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 'from, house_id, purchaser_id, state_id, to) values ('2017-01-08', 9, 9, 18, '201' at line 1 Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute statement

任何建议将不胜感激。

附注我正在使用 MySql。

最佳答案

from 是一个保留的 SQL 关键字。为您的列选择另一个名称。

关于java - Hibernate 中的日期注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535040/

相关文章:

java - 当我从外部类调用它时,为什么会收到 ClassNotFoundException?

sql - 附加两个 SQLite-DB 文件以在 Swift 中查询这两个文件

java - 有没有办法将本地数据库添加到 netbeans java 项目包中?

JavaFX 将属性保存到数据库

mysql - 顾客每天只能下一个订单

java - 有没有办法在 Oracle 11g XE 上安装 java?

mysql - 升级后Joomla内容不可见

sql - 多个外键

java - ArrayIndexOutOfBoundsException : -1 on JTable creation/tablechanged

java - 从导入建议中删除 AWT 工件