Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 写入数据库(Vaadin流)_Hibernate_Jpa_Vaadin_Rapidclipse - Fatal编程技术网

Hibernate 写入数据库(Vaadin流)

Hibernate 写入数据库(Vaadin流),hibernate,jpa,vaadin,rapidclipse,Hibernate,Jpa,Vaadin,Rapidclipse,我将几个文本字段绑定到IDE Rapidclipse中使用Vaadin 14和JPA/Hibernate的实体。目的是将单击按钮时的输入数据写入定义为数据源的引用数据库。 我已经找到了这个文档 . 所以我对这一点的理解是:首先我需要创建实体的一个新bean(Test Test=new Test())。然后所有输入数据都应该分配给bean的属性(binder.writeBean(test))。这就是文档中的内容。但是如何将数据插入数据库中实体的表中呢?我需要TestDAO类吗 在前Rapidcli

我将几个文本字段绑定到IDE Rapidclipse中使用Vaadin 14和JPA/Hibernate的实体。目的是将单击按钮时的输入数据写入定义为数据源的引用数据库。 我已经找到了这个文档 . 所以我对这一点的理解是:首先我需要创建实体的一个新bean(
Test Test=new Test()
)。然后所有输入数据都应该分配给bean的属性(
binder.writeBean(test)
)。这就是文档中的内容。但是如何将数据插入数据库中实体的表中呢?我需要TestDAO类吗

在前Rapidclipse版本中使用的Vaadin 7中,其工作原理如下:

fieldGroup.setItemDatasource(new Test());
...
fieldgroup.save()

Binder
用于将
Bean的属性绑定到UI中显示的表单(例如文本字段)。所以当你做这样的事情的时候

Binder Binder=新的Binder(Person.class);
TextField titleField=新TextField();
//首先定义要使用的字段实例
活页夹福菲尔德(标题菲尔德)
//通过实际绑定完成
//个人类
.绑定(
//加载标题的回调函数
//从一个人的例子
Person::getTitle,
//保存标题的回调函数
//以个人为例
人(头衔);
您确切地说,
titleField
显示一个人的头衔<代码>活页夹
与数据库持久性无关/不负责。 在您链接的文档中,在所有示例中都有一行与此类似:
MyBackend.updatePersonInDatabase(个人)。开发人员有责任将对象持久化到底层数据库中。Flow是一个UI框架,这就是您可以自由选择数据库提供者/技术的原因

关于Vaadin 7,你在哪里找到了一个例子?我在
字段组
类中找不到
保存
的方法

也许有人扩展了它并添加了所需的功能

因此,例如,如果您正在使用hibernate,请遵循以下步骤:

session.save(emp)将把对象插入数据库。
摘自这里:

其他一些有用的链接:


Binder
用于将
Bean的属性绑定到UI中显示的表单(例如文本字段)。所以当你做这样的事情的时候

Binder Binder=新的Binder(Person.class);
TextField titleField=新TextField();
//首先定义要使用的字段实例
活页夹福菲尔德(标题菲尔德)
//通过实际绑定完成
//个人类
.绑定(
//加载标题的回调函数
//从一个人的例子
Person::getTitle,
//保存标题的回调函数
//以个人为例
人(头衔);
您确切地说,
titleField
显示一个人的头衔<代码>活页夹
与数据库持久性无关/不负责。 在您链接的文档中,在所有示例中都有一行与此类似:
MyBackend.updatePersonInDatabase(个人)。开发人员有责任将对象持久化到底层数据库中。Flow是一个UI框架,这就是您可以自由选择数据库提供者/技术的原因

关于Vaadin 7,你在哪里找到了一个例子?我在
字段组
类中找不到
保存
的方法

也许有人扩展了它并添加了所需的功能

因此,例如,如果您正在使用hibernate,请遵循以下步骤:

session.save(emp)将把对象插入数据库。
摘自这里:

其他一些有用的链接:


因此,在这种意义上,瓦丁7和瓦丁14之间没有任何变化。您可以使用与以前相同的逻辑<代码>保存(实体)
方法仍然获取它需要持久化的对象。在您的情况下,它是关于
DAO
写给binderan的。如何实现persistense取决于您<代码>DAO
增加了抽象级别。谢谢,成功了。这很明显。我不知道为什么我没有得到它。没问题!很好,它现在起作用了,我们都在努力缩小一些问题:)所以在这个意义上,瓦丁7和瓦丁14之间没有任何变化。您可以使用与以前相同的逻辑<代码>保存(实体)
方法仍然获取它需要持久化的对象。在您的情况下,它是关于
DAO
写给binderan的。如何实现persistense取决于您<代码>DAO
增加了抽象级别。谢谢,成功了。这很明显。我不知道为什么我没有得到它。没问题!很好,它现在可以工作了,我们都在努力缩小一些问题:)
Binder<Person> binder = new Binder<>(Person.class);

TextField titleField = new TextField();

// Start by defining the Field instance to use
binder.forField(titleField)
        // Finalize by doing the actual binding
        // to the Person class
        .bind(
                // Callback that loads the title
                // from a person instance
                Person::getTitle,
                // Callback that saves the title
                // in a person instance
                Person::setTitle);