我刚刚建立了一个到目前为止仍然非常少的项目maven / jpa / hibernate项目,在这里我试图持久化一个对象。
我的课很简单:
@Entity
public class Person {
@Id @GeneratedValue
private int id;
private String name;
}
我的persistence.xml也是非常基本的:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="Fahrplan_v2">
<class>model.Person</class>
<properties>
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
<property name="hibernate.connection.url" value="jdbc:hsqldb:file:data/db/db" />
<property name="hibernate.connection.username" value="sa" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
最后,这是我用来保留对象的代码:
EntityManager em = entityManagerFactory.createEntityManager();
em.getTransaction().begin();
em.persist(person);
// em.flush(); <- does not effect outcome.
em.getTransaction().commit();
em.close();
现在,我希望在这里发生两件事:首先,我希望创建Person表(由于hibernate.hbm2ddl.auto =
update)。这已经发生过一次,并且正确写出了
CREATE MEMORY TABLE PUBLIC.PERSON(
ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,
NAME VARCHAR(255)
)
但我根本无法复制。每次我启动程序时,都会创建hsqldb数据库文件,但不会创建任何表。
其次,我希望持久化对象存储在数据库中,但事实并非如此。另外,手动创建数据库模式也不能解决问题,因此并不是造成此问题的原因。持久代码运行时在输出中没有任何异常或任何警告,这一切看起来都很好。但是对象只是没有到达数据库。使用“来自Person”查询实体管理器时,也找不到该对象。
但是查询似乎是唯一起作用的东西。我可以手动将基准插入数据库,“ from Person”查询将成功检索它。
因此,关于我在这里做错什么的任何提示?
通过axtavt添加一个很好的答案,并阐明您的sleep(1000)的工作原理:对于需要绝对同步持久性的开发环境,请关闭默认的write_delay。
<property name="hibernate.connection.url"
value="jdbc:hsqldb:file:data/db/db;shutdown=true;hsqldb.write_delay_millis=0"/>
这意味着在将结果返回给调用方之前,每个语句都已写入磁盘。自然,在正常操作中,您可以增加此值。默认值为500
ms,需要sleep(1000)。给出的信息适用于HSQLDB 2.2.x版。
主要内容:设置,更新在本章中,我们将向演示如何将数据保存到Firebase。 设置 方法将写入或替换指定路径上的数据。 让我们创建一个引用收集和设置两个运动员数据信息。 执行上面示例代码,得到以下结果 - 更新 我们可以用类似的方式更新Firebase数据。 注意我们如何使用路径。 执行上面示例代码,得到以下结果 -
我将多个文本字段绑定到IDE Rapidclipse中的一个实体,该实体使用Vaadin14和JPA/Hibernate。其目的是将按钮点击时的输入数据写入定义为DataSource的引用数据库中。我已经发现这个文档是手动编写的。所以我对此的理解是这样的:首先,我需要创建一个实体的新bean()。那么所有输入数据都应该分配给bean()的属性。文档就这么多了。但是数据是如何插入到数据库中实体的表中
问题内容: 在我们的应用程序中,我们希望用户输入如下: 我想在单元测试中通过该部分,以便我可以恢复线程以执行其余代码。我如何从junit 写入内容? 问题答案: 你想要做的是使用的方法从。这将使您可以从junit 传递数据。
我使用Spring-Boot、spring-data/jpa和Hazelcast客户机/服务器拓扑。在我的测试应用程序的某些部分中,我在客户端(服务器是与关系数据库交互的服务器)执行CRUD操作时计算时间。我通过将write-delay-seconds设置为10,将映射(存储)配置为write-behind。 Spring-Data的save()返回持久化的实体。因此,在客户端应用程序中,应用程序
在本章中,我们将向您展示如何将数据保存到Firebase。 Set set方法将在指定路径上写入或替换数据。 让我们创建一个对玩家集合的引用并设置两个玩家。 var playersRef = firebase.database().ref("players/"); playersRef.set ({ John: { number: 1, age: 30 },
我尝试了,,和组合,但没有任何效果@注入失败maven quarkus插件构建: [错误]原因:javax。企业注射UnsatisfiedSolutionException:javax类型的未满足依赖关系。坚持不懈EntityManager和限定符[@Default] 我尝试了使用和不使用persistence.xml.我的数据源和application.properties工作正常,因为我可以注