您可能会阅读一些文章,告诉您通过扩展Hibernate方言
来注册SQL函数,但这是一个幼稚的解决方案。
自从Hibernate ORM 5.2.18和5.3.1以来,注册SQL函数的最佳方法是提供metadatabuildercontributor
,如下所示:
public class SqlFunctionsMetadataBuilderContributor
implements MetadataBuilderContributor {
@Override
public void contribute(MetadataBuilder metadataBuilder) {
metadataBuilder.applySqlFunction(
"group_concat",
new StandardSQLFunction(
"group_concat",
StandardBasicTypes.STRING
)
);
}
}
您可以通过Hibernate.metadata_builder_contributor
配置属性将其传递给Hibernate:
<property>
name="hibernate.metadata_builder_contributor"
value="com.vladmihalcea.book.hpjp.hibernate.query.function.SqlFunctionsMetadataBuilderContributor"
</property>
或者,如果以本地方式引导Hibernate,则可以在引导过程中将SQL函数应用于metadatabuilder
。
问题内容: 我想知道 用JPA / Hibernate注册自定义SQL函数 的最佳方法是什么。 我需要扩展MysqlInnodb的方言还是有更好的方法? 谁能提供代码示例和相关文档的指针? 问题答案: 是的,扩展方言是注册自定义SQL函数的好方法。 在Dialect类的构造函数中添加类似的内容。 查看现有的方言类之一的源代码。 http://www.koders.com/java/fid0E7F7
问题内容: 我正在使用hibernate模式开发应用程序。当我尝试创建登录页面时,出现Sql Injection问题。我有以下代码: 在这种情况下,如何防止Sql Injection?loginInfo表的创建表语法如下: 问题答案: 您还有其他选择,请参阅mkyong的这篇不错的文章。
问题内容: 有一个结构。我想以这种方式链接这三个实体:公司应包含ID,公司名称和部门列表,每个部门都有一个工人列表,ID和部门名称。每个工人都有名字,身份证。 我试图与一对多和多对一建立联系,但未成功。 公司 部 工人 我从开始: 它填充公司,但不填充其他表,也没有创建任何联接(映射)错误: 问题答案: 除了Glenn Lane的答案中提到的级联,您还需要了解双向关联是如何工作的。 它们有一个所有
扩展内可以调用registerFunction来注册内置函数到PHP中。需要注意Zend有限制,必须在Extension对象创建时注册函数。这与类的注册不同,扩展类必须在onStart回调中注册。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->registerFunction(PHP
问题内容: 我在我们的项目和Hibernate Domain Pojo对象的基于注释的配置中使用Hibernate。对于基于注释的配置,我们有两个选择 使用基于JPA的注释 使用Hibernate本机注释 当前,我们对POJO文件使用基于JPA的注释配置,并使用Hibernate本机API(如SessionFactory,Session等)打开会话并执行数据库操作。 我有以下问题: 混合使用JPA
我最近发现自己正在编写以下代码: 一位同事指出 然而, 基于这一点,我得到的印象是我没有正确理解,我开始怀疑我的原始代码是否安全。 DR 使用引用要用作侦听器且需要多次引用的方法(例如,添加+删除)是否安全? 关于匿名类等的幕后实际发生了什么?