【问题标题】:Defining Hibernate 5 FilterDefinition by code通过代码定义 Hibernate 5 FilterDefinition
【发布时间】:2021-10-29 22:04:44
【问题描述】:
我们有一个使用 Hibernate 3.6.10 的项目,现在我们计划将 Hibernate 版本升级到 5.6.0。
我们发现的一个问题是在旧的 Hibernate 中可以通过代码注册 FilterDefinition 类,但现在我无论如何都找不到这样做。所以我的问题是如何通过代码注册FilterDefinitions(不是从注释或 XML 配置中解析的)。
【问题讨论】:
标签:
java
hibernate
hibernate-5.x
【解决方案1】:
我没有尝试过,但似乎可以以编程方式将过滤器定义添加到用于构建会话工厂的元数据中:
private SessionFactory bootStrapSessionFactory(Configuration configuration) {
ServiceRegistry serviceRegistry = configuration.getStandardServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.build();
Metadata metadata = new MetadataSources(serviceRegistry).getMetadataBuilder().build();
FilterDefinition filterDefinition = ...
metadata.getFilterDefinitions().put(key, filterDefinition);
return metadata.buildSessionFactory();
}
我不太清楚为什么需要以编程方式构建过滤器,但上面的代码似乎有点像 hack