当前位置: 首页 > 知识库问答 >
问题:

找不到Hibernate H2数据库

况嘉运
2023-03-14

我对冬眠很陌生,所以我的问题对你来说很明显。我在H2控制台用3个表(data.mv.db)创建了数据库,插入一些值,然后将其复制到项目路径中的数据库文件夹中。现在我试图阅读其中一个测试,但总是有错误,即表不存在。我试着给连接url添加一些属性,比如连接延迟或者不把字母改成大写,但仍然是一样的。

错误:

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.h2.Driver</property>
        <property name="connection.url">jdbc:h2:file:~/database/data</property>
        <property name="connection.username">admin</property>
        <property name="connection.password">1234</property>

        <property name="hibernate.default_schema">PUBLIC</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.H2Dialect</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <mapping class="data.Login_data"/>
    </session-factory>

</hibernate-configuration>
@Entity
@Table(name = "LOGIN_DATA")
public class Login_data {

    private int id;
    private String name;
    private String password;
    private String values;

    public Login_data() {
        // this form used by Hibernate
    }

    public Login_data(int id, String name, String password, String values) {
        this.id = id;
        this.name = name;
        this.password = password;
        this.values = values;
    }

    @Id
    @GeneratedValue
    @Column(name = "ID")
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column(name = "USERNAME")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Column(name = "PASSWORD")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Column(name = "FAVOURITE")
    public String getValues() {
        return values;
    }

    public void setValues(String values) {
        this.values = values;
    }
}
public static void main(String[] args){
            Login_data user = new Login_data();
            SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
            Session session = sessionFactory.openSession();



                /*session.beginTransaction();
                session.save(user);
                session.getTransaction().commit();*/

                // now lets pull events from the database and list them
                session.beginTransaction();
                List result = session.createQuery("from Login_data").list();
                for (Login_data event : (List<Login_data>) result) {
                    System.out.println(event.getName());
                }
                System.out.print(result);
                session.getTransaction().commit();
                session.close();

        }

我试过编辑配置。所以我补充:

 <property name="hibernate.hbm2ddl.auto">update</property>

并使数据库为空。奇怪的是,在H2控制台打开后,Java创建的数据库和表是不可见的。所以这可能是问题所在。我想放很多数据,那么如何让它不从java中可见到那里呢?

共有1个答案

沈博延
2023-03-14

多亏了@JB Nizet,我明白了我的错误。我正在将数据库复制到项目路径中,我的路径“~/database”显示在用户文件夹中的数据库中,我正在将它复制到项目文件夹中,所以我应该使用“./database”。不过,如果我想使runnable,我将需要使用用户位置,以使它在其他机器上正确地工作。

 类似资料:
  • 问题内容: 它是Ajax JSP页面的一部分 Flat_No中总共有4个值,它在控制台和aftr中打印第一个值,这在我的jsp页面上出现错误“ java.sql.SQLException:找不到数据” 问题答案: 当通过较差的JDBC-ODBC桥驱动程序使用MSAccess数据库并从结果集中多次检索相同数据时,这是一个典型错误。您需要检索一次数据并将其分配给变量,然后多次使用该变量。 与 具体问题

  • 问题内容: 我正在尝试传递给jasper报告字符串位置的模板。因此,我在模板和值中传递了参数的键。当我在项目中有图像时,一切都在工作,但我想在另一个地方使用它。有什么方法可以从例如属性文件中读取参数?我不知道为什么这种解决方案不起作用: 我的形象: … 错误: 问题答案: 好的,我找到了…应该是:

  • 我使用的是Spring Boot MVC,Spring的在数据源配置之前被调用,数据源配置加载到中。 总是首先被调用,因此从来没有为Autowed定义过bean。 我尝试了从到的所有方法。我找不到一个像样的解释。但是我需要在数据源运行WebSecurity之前为它创建一个Bean

  • Springboot在IDEA运行没有问题,但是打包jar后在本地终端java -jar就无法访问数据库请求数据了 这是我的applocation.yml 我的application.properyies spring.application.name=demo 我IDEA上无论连的自己本地库还是云服务宝塔上面的公网都可以,就是内网不行,但是应该接公网就可以吧?我该怎么解决?

  • 问题内容: 我尝试基于使用Hibernate内存数据库配置Spring Data : 但是我一遍又一遍地得到: org.hibernate.cfg.Environment。HHH000206:找不到hibernate.properties 问题是我不想在文件中指定它,就像我以前没有Spring Data一样,我想在配置中设置它,就像我基于的答案一样。我想念什么吗?预先感谢您的帮助。 问题答案: 那

  • Spring boot版本1.5.3