【问题标题】:How to insert a date in a Date Type Column in HSQLDB Table using Hibernate?如何使用 Hibernate 在 HSQLDB 表的日期类型列中插入日期?
【发布时间】:2015-06-09 13:23:45
【问题描述】:

我正在尝试在 HSQLDB 的表的列中插入日期类型条目。问题是我正在使用 Hibernate 来执行此操作,有人可以帮我怎么做吗?

表格如下:

CREATE TABLE TEST(
WORKINGDATE DATE NOT NULL
)

Bean文件如下:

import java.util.Date;

public class Test {

    private Date workingDate;


    public Date getWorkingDate() {
        return workingDate;
    }

    public void setWorkingDate(Date workingDate) {
        this.workingDate = workingDate;
    }

    @Override
    public String toString() {
        return "Test [workingDate=" + workingDate + "]";
    }

}

XML 映射如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="bean.hibpackage.Test" table="TEST">

        <property name="workingDate" column="WORKINGDATE" type="date" />

    </class>
</hibernate-mapping>

现在的测试场景是:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import bean.hibpackage.Test;

public class TestHibernate2 {

    /**
     * @param args
     * @throws ParseException 
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Test test = new Test();

        String date_s = "2015-02-22";

        {
        //How to format the above given string to a date type so that the
        //program will work
        }

        test.setWorkingDate(?);

        Session ses = null;

        try {
            SessionFactory sessions = null;
            sessions = new Configuration().configure().buildSessionFactory();

            ses = sessions.openSession();

            Transaction tran = ses.beginTransaction();

            ses.save(test);

            tran.commit();
        } finally {
            ses.close();
        }

    }

}

【问题讨论】:

    标签: eclipse hibernate hsqldb


    【解决方案1】:

    您只需要解析Date 字符串表示:

    String date_s = "2015-02-22";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    test.setWorkingDate(sdf.parse(date_s));
    

    【讨论】:

    • 感谢弗拉德,这是我尝试的第一件事,当然这就是解决方案。但是问题出在我的数据库表和 Hibernate XML 映射类上,您可以注意到我的 XML 文件 中没有 ID 字段,并且我发现 Hibernate 以某种方式不允许连接到数据库表没有 ID 字段,即连接没有主键/复合键列的数据库表。一旦我这样做了,我就可以走了!谢谢,但因为是你的回复迫使我进行了肤浅的根本原因分析......
    • @DhirendraVerma:你会考虑接受这个答案吗?为此,请单击答案左侧的刻度线,使其变为绿色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 2012-06-16
    • 2018-03-10
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    相关资源
    最近更新 更多