gpt4 book ai didi

java - Hibernate with H2 不存储数据

转载 作者:行者123 更新时间:2023-12-01 04:49:21 27 4
gpt4 key购买 nike

我正在使用 H2 通过 Hibernate 开发一个简单的 Java 应用程序。

我没有收到任何异常。Hibernate 输出和 H2 的跟踪文件向我显示了数据的插入。

但是数据没有存储在数据库中。hibernate 和 H2 控制台都不显示任何插入的数据。

也许有人有想法。

谢谢

这是我的 Hibernate 配置:

<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
<property name="hibernate.connection.url">jdbc:h2:~/HibTest;TRACE_LEVEL_FILE=3;FILE_LOCK=NO</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>

<property name="hibernate.hbm2ddl.auto">create-drop</property>

<mapping package="de.test.hib.domain" />
<mapping class="de.test.hib.domain.Data" />
</session-factory>
</hibernate-configuration>

这是我的域类:

package de.test.hib.domain;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;


@Entity
@SequenceGenerator(sequenceName="SEQ_DATA",name="SEQ_DATA_GEN",initialValue=1)
public class Data implements Serializable {

private static final long serialVersionUID = 1L;

private Integer id;
private String content;

@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}

@Override
public boolean equals(Object object) {
if (!(object instanceof Data)) {
return false;
}

Data other = (Data) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}

return true;
}

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="SEQ_PERSON_GEN")
public Integer getId() {
return id;
}

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

@Column(nullable=false)
public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}

以及持久化过程:

Transaction trans = HibernateUtils.getInstance().getCurrentSession().beginTransaction();
HibernateUtils.getInstance().getCurrentSession().saveOrUpdate(this);
HibernateUtils.getInstance().getCurrentSession().flush();
trans.commit();

最佳答案

从数据库 URL 中删除选项 FILE_LOCK=NO。这是非常危险的,因为这意味着数据库文件不 protected 。如果数据库已经打开,以这种方式打开数据库将会损坏数据库文件。

关于java - Hibernate with H2 不存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15249176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com