Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行程序后,文件数据库中没有架构通过hibernate持久化到hsqldb:file_Hibernate_Hsqldb - Fatal编程技术网

运行程序后,文件数据库中没有架构通过hibernate持久化到hsqldb:file

运行程序后,文件数据库中没有架构通过hibernate持久化到hsqldb:file,hibernate,hsqldb,Hibernate,Hsqldb,下面是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-con

下面是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>

jdbc:hsqldb:file:test\u db\u文件
假的
org.hsqldb.jdbcDriver
org.hibernate.dialogue.hsql方言
组合1
线
org.hibernate.cache.NoCacheProvider
真的
创造
当我将hsqldb更改为mysql db时,它工作得很好。但当我像这样离开它,并将hsqldb:file作为数据库连接到NetBeans中时,在公共模式中并没有任何东西可以在运行程序后找到创建的表

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

这是我的简单main,正如我所写的,当我使用一些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();
  }
}
import java.util.List;
导入org.hibernate.Criteria;
导入org.hibernate.Session;
导入资源.HibernateUtil;
进口网站。网站;
公营部门{
公共静态void main(字符串[]args){
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
创建(会话);
criterial=session.createCriterial(Website.class);
对于(网站w:(列表)criterial.List()){
System.out.println(“站点:+w.getSiteName()+”+w.getSiteUrl());
}
session.getTransaction().commit();
}
}

谢谢你的回答

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


注意:用户名和写入延迟的其他设置对最新版本2.2.x及更高版本有效。它们不适用于1.8.x版。

谢谢您的回复,这一点很好,但当我使用绝对地址时,两者都使用相同的用户证书(我通过netbeans数据库连接创建数据库文件,然后尝试从我得到的程序中使用它:
java.sql.SQLException:database lock acquisition failure:lockFile:org.hsqldb.persist。LockFile@340e5f64[file=/home/myhome/tmp/mydb1/mydb1.lck
有什么想法吗?以某种方式在mydb1.script中设置权限?您可以一次使用一个进程访问数据库。错误显示数据库仍由另一个Java进程保持打开状态。如果要同时访问,请运行HSQLDB服务器。