Hibernate 4.3,在构建 SessionFactory 时为什么我们必须提供两次属性?

2023-12-23

使用 Hibernate 4.3.5 当您想要创建 SessionFactory (例如单元测试)时,您必须提供属性两次:

  1. 一次配置
  2. 第二次,将设置应用到服务注册表构建器时

该示例如下所示:

Properties properties = new Properties();
properties.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect");
properties.put("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver");
properties.put("hibernate.connection.url", "jdbc:hsqldb:mem:test");
properties.put("hibernate.connection.username", "sa");
properties.put("hibernate.connection.password", "");
properties.put("hibernate.hbm2ddl.auto", "update");
properties.put("hibernate.show_sql", "true");

SessionFactory sessionFactory = new Configuration()
    .addProperties(properties)
    .addAnnotatedClass(SecurityId.class)
    .buildSessionFactory(
            new StandardServiceRegistryBuilder()
                    .applySettings(properties)
                    .build()
);  

如果我评论:

//.addProperties(properties)

那么“hibernate.hbm2ddl.auto”属性就不够彻底:

Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: SECURITYID

如果我评论:

//.applySettings(properties)

我得到:

org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 

尾声可用于GitHub https://github.com/vladmihalcea/hibernate-master-class/blob/master/src/test/java/com/vladmihalcea/DriverConnectionProviderTest.java.


尝试以下代码,它使用配置中的属性。

Configuration configuration = new Configuration();
configuration.addAnnotatedClass(SecurityId.class);
configuration.addProperties(properties);
configuration.configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 4.3,在构建 SessionFactory 时为什么我们必须提供两次属性? 的相关文章

随机推荐

  • npm 发布到 Artifactory 不起作用

    我已经根据此处给出的说明设置了 Artifactory http www jfrog com confluence display RTF Npm Repositories http www jfrog com confluence dis
  • webbrowser iframe 在默认浏览器中打开

    我有 WebBrowser 控件可以在默认浏览器中打开链接 如下所示 private void webBrowser1 Navigating object sender WebBrowserNavigatingEventArgs e if
  • 如何使用 Bazel 构建使用 OpenCV 的项目 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 使用 Bazel 构建使用 OpenCV 库的 C 代码的最佳方法是什么 即 构建规则是什么样的 应该如
  • CSS 使 div 100% 宽度与 body 相关,而不是它的父 div

    I have div style width 500px div style width 100 div div 子 div 占用其父 div 的 100 宽度 有没有一种方法可以强制它采用 100 的 body 宽度而不是父 div 相对
  • ThreadPool 适合这种线程场景吗?

    我有一个场景 如果可能的话 我试图通过在用户实际需要结果之前预获取结果的一些子元素来将其变成响应速度更快的 UI 我不清楚如何最好地处理线程 所以我希望有人可以提供一些建议 Scenario 有一个搜索表单 NET 富客户端 使用户能够为给
  • 创建游程 ID,同时允许游程中存在一定长度的间隙

    我最初发布了一个问题here https stackoverflow com questions 66478148 create a list of vectors from a vector where n consecutive val
  • Protractor - 如何通过自定义(非 HTML)属性定位元素?

    我正在使用 Selenium WebDriver 和 Protractor 在我的 Angular 项目上运行 e2e 测试 假设我有一个像这样的元素 div div 如何找到上面的元素 我尝试过element by css div my
  • 在 PHP 中压缩文件时删除目录结构

    我在 PHP 中压缩文件时遇到了一些问题 我有一个压缩文件数组的函数 这些文件都位于不同的目录中 该函数如下所示 function create zip files array destination overwrite false add
  • 如何使用 pywin32 从 ms 项目中的任务使用情况中提取数据?

    我正在尝试使用 pywin32 Python 库将数据从 MSProject mpp 文件提取到 Excel 文件 我希望我的员工在其中注册他们的工作时间 我可以从任何我想要的字段中提取数据 但任务使用表除外 该表显示每天任务 一个人 X
  • 未捕获的类型错误:Module.cwrap 不是函数

    我需要在浏览器端解码 h264 数据 因为我使用 emscripten 在 Web Assembly 中构建 openh264 库 我已经成功构建它并尝试在 java 脚本中使用它来解码 h264 数据 但我收到以下一行的一个错误 var
  • Sqlite for iOS 是用哪种线程模式编译的?

    这一页http www sqlite org threadsafe html http www sqlite org threadsafe html提到 单线程 多线程 连载 iOS 5中集成的sqlite是用什么模式编译的 好的 所以 s
  • 用于获取 PancakeSwap 上币安智能链代币价格的 API

    我有一个代币的地址 我需要获取它的 BUSD 或 BNB 价格 如果没有其他办法的话 使用付费API是没有问题的 该代币可能不会出现在热门列表中 因此最好直接从 PancakeSwap 获取价格 这是直接从 PancakeSwap 获取的方
  • 隐藏后的CSS无限动画不重置(Chrome)

    这里我有一个 CSS 关键帧动画的例子 你可以在这个演示 http jsfiddle net umbreak q234Lsx8 1 该代码每 1 4 秒就会将 img 缩放到 0 75 然后返回到其原始 1 比例 效果很好 然后我添加一个简
  • 如何使用 CSS 动画更改 CSS 动画中的字体颜色

    我正在努力做到这一点 以便当我打开页面时 test将显示为红色并且testing将显示为白色 当页面打开时 我要保留一个延迟 如果您运行该程序 您将看到 Css hero h1 display block width fit content
  • iOS 蓝牙后台模式

    我希望继续扫描蓝牙设备 并且希望应用程序在后台运行 是否可以 似乎如果我有一个连接的蓝牙设备 并且有数据传输 那么该应用程序就会在后台保持唤醒状态 但是 如果我只是在后台扫描 似乎即使我有Uses Bluetooth LE accessor
  • 在 ext4 上覆盖小文件是原子的吗?

    假设我们有一个文件FILE SIZE字节 并且 FILE SIZE lt min page size physical block size 文件大小永远不会改变 即truncate 或附加write 从未执行过 仅通过使用以下命令完全覆盖
  • 条件语句体内是否有可能存在多个语句?

    我主要是一名 C 因此是一名 OO 命令式 程序员 我觉得很奇怪的是 在条件语句中 每个求值只能有一个语句 例如函数式语言 Scheme 中的 if 语句 例如 let arg1 0 arg2 1 if gt arg1 arg2 arg1
  • 在 sqlplus 输入文件中参数化表名

    我正在尝试使用 sqlplus 和 Oracle 假脱机功能导出一些数据 问题是我定义导出的 SQL 输入文件不允许我参数化从中导出数据的表名 它需要一个文字 在 shell 脚本中调用 sqlplus sqlplus USER PASSW
  • 使用 C# 中的 powershell cmdlet 重新启动 Hyper V 计算机

    我正在尝试构建一个应用程序来重新启动 Server 2012 中 Hyper V 中的虚拟机 我重新启动了列表中的每个虚拟机 但我想对其进行调整以关闭机器然后重新打开 注释的代码是强制重启的工作 提前致谢 public async stat
  • Hibernate 4.3,在构建 SessionFactory 时为什么我们必须提供两次属性?

    使用 Hibernate 4 3 5 当您想要创建 SessionFactory 例如单元测试 时 您必须提供属性两次 一次配置 第二次 将设置应用到服务注册表构建器时 该示例如下所示 Properties properties new P