0

这是hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.url">jdbc:hsqldb:file:test_db_file</property>
    <property name="hsqldb.write_delay">false</property>
    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
    <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
    <property name="hibernate.connection.username">combine1</property>
    <property name="hibernate.connection.password"></property>

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>
    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>
    <!-- Drop and re-create the database schema on startup -->
    <property name="hbm2ddl.auto">create</property>
    <!--
         few resources
    -->

  </session-factory>
</hibernate-configuration>

当我将 hsqldb 更改为 mysql db 时,它工作正常。但是当我这样离开时,我将 hsqldb:file 连接为 NetBeans 中的数据库,公共模式中没有任何内容,我想在运行程序后找到创建的表。

在运行时,类是持久化的,我可以从会话等中加载它们,但是程序结束后,什么都没有。除了在 test_db_file.script 中是用于创建所需模式的查询,但不是我保存到数据库中的行。

正如我所写,这是我的简单主要内容,当我使用一些 mysql 数据库时,它可以工作:

import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import resources.HibernateUtil;
import website.Website;

public class MrhAdministration {

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

    WebsiteCreator.create(session);

    Criteria criterial = session.createCriteria(Website.class);
    for (Website w : (List<Website>) criterial.list()) {
      System.out.println("Sites: " + w.getSiteName() + " " + w.getSiteUrl());
    }
    session.getTransaction().commit();
  }
}

感谢您的回答!

4

1 回答 1

0

最可能的问题是数据库文件的位置。jdbc:hsqldb:file:test_db_file当您使用不同的程序访问数据库时,您正在使用解析到不同位置的相对路径。尝试绝对路径,例如jdbc:hsqldb:file:/db/test_db_file

请注意,您对 username 和 write_delay 的其他设置对最新版本 2.2.x 及更高版本有效。它们不适用于 1.8.x 版本。

于 2012-10-28T21:45:06.603 回答