【问题标题】:Date Annotation in HibernateHibernate 中的日期注释
【发布时间】:2017-05-22 22:45:12
【问题描述】:

我有一个具有以下关系的数据库架构:

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

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);
}
}

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

警告:SQL 错误:1064,SQLState:42000 sty 2017 年 8 月 5:25:34 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以在 'from、house_id、purchase_id、state_id、to) 值附近使用('2017-01-08'、9、9、18、'201' 在第 1 行 线程“主”org.hibernate.exception.SQLGrammarException 中的异常:无法执行语句

我们将不胜感激。

附言我正在使用 MySql。

【问题讨论】:

    标签: java mysql database hibernate annotations


    【解决方案1】:

    from 是保留的 SQL 关键字。为您的列选择其他名称。

    【讨论】:

    • 它有帮助!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 2011-06-03
    • 2012-04-23
    • 2011-10-04
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多