当前位置: 首页 > 面试题库 >

如何在Hibernate的import.sql中将表达式分成更多行?

郑俊弼
2023-03-14
问题内容

在Hibernate中,可以import.sql在类路径的根目录中添加文件,并且在创建Hibernate会话时,将在数据库上执行该文件的SQL表达式。

但是,如果某些表达式分成两行或更多行,则Hibernate会引发异常。如何将SQL表达式分成更多行?


问题答案:

为了像我这样的人通过搜索找到此内容:

如果您使用的是Hibernate4,则可以添加以下属性

<property name="hibernate.hbm2ddl.import_files_sql_extractor" value="org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor" />

到您的hibernate配置(我的是JPA的persistence.xml)。与用户手册和JIRA问题进行比较。

请注意 ,在Hibernate的 hibernate.cfg.xml中 ,规范无法识别该value属性,您应该将其提供为文本内容:

<property name="hibernate.hbm2ddl.import_files_sql_extractor">org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor</property>

(感谢Daniel Gerber指出这一点)



 类似资料:
  • 问题内容: 我有一个很长的正则表达式,我希望在JavaScript代码中将其分成多行,以根据JSLint规则将每行长度保持80个字符。我认为这对阅读更好。这是模式样本: 问题答案: 您可以将其转换为字符串并通过调用创建表达式: 笔记: 将 表达式文字 转换为字符串时,您需要对所有反斜杠进行转义,因为在评估字符串文字时会消耗反斜杠。(有关更多详细信息,请参见Kayo的评论。) 接受修饰符作为第二个参

  • 问题内容: 这实际上可行吗?我有一些很长的正则表达式模式规则,这些规则很难理解,因为它们无法一次放入屏幕。例: 反斜杠或三重引号将不起作用。 编辑。我结束使用VERBOSE模式。现在是正则表达式模式的外观: 问题答案: 您可以通过引用每个段来分割正则表达式模式。无需反斜杠。 您还可以使用原始字符串标志,并且必须将其放在每个段之前。 参见文档。

  • 问题内容: 我正在尝试实现一个接受字符串列表的Web服务,每个字符串都是一个正则表达式。需要将这些与数据库的六列进行比较,并且需要返回任何匹配的行。 我相信Oracle具有我可以使用的regexp_like()函数,但是我正在寻找使用Hibernate做到这一点的 最佳 方法,因此,我不反对持久性引擎。 我从这样的东西开始,其中参与者集合包含正则表达式: 这是行不通的,因为“输入”不会执行我想要的

  • 我有以下在MongoDB中运行良好的MongoDB聚合查询 如何使用Spring Data MongoDB API来表示这个复杂的$sum操作? sum()方法只需要简单字符串。根据这张票(已关闭)https://jira.spring.io/browse/DATAMONGO-784聚合应支持复杂的操作,如$cmp和$cond 更新:这里似乎忘记了该方法的sum(AggregationExpres

  • 问题内容: 假设我有一个带有数量字段和价格字段的持久类Item。有没有办法建立一个计算数量*价格之和的标准? 问题答案: 我认为您也可以使用SQL投影。应该是这样的:

  • 在本期节目中: 作为lambda表达式。然而,我对如何实际用lambda表达式替换内部类感到困惑,因为我以前从未这样做过。 如果您也能解释lambda表达式是如何工作的,就像我在W3Schools上看到的那样。 //numbers.foreach(n)->{system.out.println(n);}); (1)你引用了一些东西。(数字) (2)表示某种命令。(forEach) (3)设置参数(