java - Java Hibernate:无法创建请求的服务 [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
问题描述
抱歉 4 我的英语不好 :P
现在我正在测试 Hibernate,在 MySQL 上还可以,但在 PostgreSQl 上我遇到了问题(`因为我连接到 Heroku DB)。我正在尝试连接到 DB,但它向我抛出了异常(我已经检查了 hibernate.cfg.xml 中的所有属性):
org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
Caused by: org.hibernate.HibernateException: Unable to make JDBC Connection [jdbc:postgres://username:password@host:5432/database]
java.lang.NullPointerException: Cannot invoke "org.hibernate.SessionFactory.openSession()" because the return value of "ua.sillmarry.ArtToolsBot.util.HibernateUtil.getSessionFactory()" is null
有我的hibernate.cfg.xml:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgres://username:password@host:5432/database</property>
<property name="connection.username">username</property>
<property name="connection.password">password</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.PostgreSQL94Dialect</property>
<property name="show_sql">true</property>
<property name="current_session_context_class">thread</property>
<property name="hbm2ddl.auto">validate</property>
<property name="hibernate.dbcp.initialSize">5</property>
<property name="hibernate.dbcp.maxTotal">20</property>
<property name="hibernate.dbcp.maxIdle">10</property>
<property name="hibernate.dbcp.minIdle">5</property>
<property name="hibernate.dbcp.maxWaitMillis">-1</property>
<mapping class="ua.sillmarry.ArtToolsBot.entity.Brush" />
</session-factory>
</hibernate-configuration>
HibernateSessionFactoryUtil 类:
package ua.sillmarry.ArtToolsBot.util;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class HibernateSessionFactoryUtil {
private static StandardServiceRegistry registry;
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
try {
registry = new StandardServiceRegistryBuilder().configure().build();
MetadataSources sources = new MetadataSources(registry);
Metadata metadata = sources.getMetadataBuilder().build();
sessionFactory = metadata.getSessionFactoryBuilder().build();
} catch (Exception e) {
e.printStackTrace();
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
return sessionFactory;
}
public static void shutdown() {
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
类画笔(映射):
package ua.sillmarry.ArtToolsBot.entity;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
@Data
@Entity
@Table(name = "brushes")
public class Brush implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "brushes")
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "category")
private String category;
@Column(name = "gd_brush")
private String gd_brush;
@Column(name = "gd_img")
private String gd_img;
public String toString() {
return "Brush{\n" +
"id=" + id + ";\n" +
"name='" + name + "';\n" +
"category='" + category + "';\n" +
"gd_brush='" + gd_brush + "';\n" +
"gd_image='" + gd_img + "'.";
}
}
解决方案
推荐阅读
- javascript - 在压缩图像和上传时,我的代码有什么问题?
- c# - 使用 PhotonView.isMine 方法时无法检测到错误
- c++ - C ++如何防止在编译时调用多个方法?
- apache - 虚拟主机设置显示默认的 apache2 页面
- php - 一种基于唯一 ID 限制数据的方法
- google-cloud-platform - Windows 服务器带宽限制
- excel - 我需要有人帮助来整合我的 vba 代码以用于工作中的电子表格
- android - Android 设备:连接到 iBeacon
- c++ - 将 .dat 文件中的名称读入链表
- mongodb - Mongo 导入 Azure Cosmos DB 更新不完整