java - 调用 EntityManagerFactory 时 JavaFX 窗口停止工作
问题描述
我正在研究 javafx 和 jpa,当我尝试通过视图上的操作连接数据库时,应用程序停止工作。我发现应用程序在调用 EntityManagerFactory 时停止工作,并且我尝试将保存到数据库的函数作为线程启动,因此视图不会停止工作,但数据永远不会发送到数据库。我相信没有必要运行它,因为线程一定是另一个问题,所以我删除了线程。当我运行该功能时,终端会给出以下消息:
set 05, 2019 9:22:59 AM javafx.fxml.FXMLLoader$ValueElement processValue
WARNING: Loading FXML document with JavaFX API of version 11.0.1 by JavaFX runtime of version 8.0.221
set 05, 2019 9:23:01 AM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [
name: sistema
...]
set 05, 2019 9:23:01 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.12.Final}
set 05, 2019 9:23:01 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
set 05, 2019 9:23:01 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
set 05, 2019 9:23:02 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
set 05, 2019 9:23:02 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.cj.jdbc.Driver] at URL [jdbc:mysql://localhost/hibernate?useTimezone=true&serverTimezone=UTC]
set 05, 2019 9:23:02 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
set 05, 2019 9:23:02 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
set 05, 2019 9:23:02 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
就到此为止,别再做什么了。
FX控制器:
public class FXBairroController implements Initializable {
@FXML
private TextField fieldNome;
@FXML
private TextField fieldTaxa;
private BairroController bController;
@FXML
private void onClickSalvar(ActionEvent event) {
bController = new BairroController();
Bairro b = new Bairro(fieldNome.getText(), new BigDecimal(fieldTaxa.getText()), true);
bController.salvar(b);
}
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
}
}
看法:
<children>
<Button layoutX="199.0" layoutY="136.0" mnemonicParsing="false" onAction="#onClickSalvar" prefHeight="25.0" prefWidth="101.0" text="Salvar" />
<Label layoutX="59.0" layoutY="47.0" text="Nome">
<font>
<Font size="14.0" />
</font>
</Label>
<TextField fx:id="fieldNome" layoutX="59.0" layoutY="74.0" prefHeight="25.0" prefWidth="241.0" />
<Label layoutX="59.0" layoutY="109.0" text="Taxa">
<font>
<Font size="14.0" />
</font>
</Label>
<TextField fx:id="fieldTaxa" layoutX="59.0" layoutY="136.0" prefHeight="25.0" prefWidth="126.0" />
我的控制器
public Bairro salvar(Bairro bairro) {
emf = Persistence.createEntityManagerFactory("sistema");
em = emf.createEntityManager();
try {
em.getTransaction().begin();
em.persist(bairro);
em.getTransaction().commit();
} catch (Exception ex) {
System.out.println(ex);
}
return bairro;
}
调试应用程序我发现线程正在变成“mysql-cj-abandoned-connection-cleanup”并一直运行,直到我关闭进程。
解决方案
推荐阅读
- html - 使 div 下拉导航栏元素的大小和位置与超链接导航栏元素相同
- next.js - 为什么 purgeCSS 会删除我的 React-Bootstrap 应用程序使用的样式?
- python - Amazon RDS:OperationalError:(2003,“无法连接到 rds.amazonaws.com (110) 上的 MySQL 服务器”)
- c++ - Initializing multi-dimensional std::vector without knowing dimensions in advance
- javascript - 在屏幕之间传递数据、route.params、React Native 导航
- python - discord.ext.commands.errors.MissingRequiredArgument:时间是缺少的必需参数
- node.js - RSS 提要的问题
- python - 查找多索引中的最后一行,如果为 null,则将 Exit 添加到下一列
- python-3.x - pip 列出了库的特定版本,但报告找不到该版本?
- python - 如何将tomtom api与python请求一起使用。它返回一个文本“用户不活动”