我当前的设置是使用单独的方言
,我可以在使用application-{profile}.yml
之间切换;这是可行的,但是函数声明需要在不同的方言中重复,感觉不太理想。
看15.29。非标准化函数在Hibernate文档中,它说我应该使用org.Hibernate.cfg.configuration#addsqlfunction()
,这似乎更易于移植,并且不需要扩展所有三种方言。
我的问题是:如何访问Spring Boot(1.3)应用程序中的Hibernateconfiguration
类?缺省情况下没有要注入的bean,也没有LocalSessionFactoryBean
bean。
有人能给我指明正确的方向吗,或者用其他方法注册一次sql函数吗?
我对这个问题颇有研究。
Hibernate使用org.Hibernate.dialt.dialt.sqlFunctionRegistry
来识别DB函数。
下面是hibernate Core4.3.10的一个示例。在内部,它由两个私有字段组成:
/**
* Defines a registry for SQLFunction instances
*
* @author Steve Ebersole
*/
public class SQLFunctionRegistry {
private final Dialect dialect;
private final Map<String, SQLFunction> userFunctions;
第一个字段表示数据库的方言。第二个包含用户定义的函数,这些函数可以由org.hibernate.cfg.configuration#addsqlfunction()
填充。
不幸的是,在搜索hibernate源代码时,我发现在初始化hibernate时创建的配置对象没有以任何方式公开。
但是,我设法获得了对SQLFunctionRegistry的访问。
需要创建EntityManagerFactory类型的本地autowired字段
@Autowired
private EntityManagerFactory emFactory;
然后调用以下代码:
private void registerMyDbFunctions()
{
SQLFunctionRegistry registry = this.emFactory.unwrap(org.hibernate.internal.SessionFactoryImpl.class).getSqlFunctionRegistry();
Field field = ReflectionUtils.findField(SQLFunctionRegistry.class, "userFunctions");
ReflectionUtils.makeAccessible(field);
Map<String, SQLFunction> userFunctions = (Map<String, SQLFunction>)ReflectionUtils.getField(field, registry);
userFunctions.put("my_func", new SQLFunctionTemplate(TextType.INSTANCE, "my_func(?1, ?2)"));
}
我正在使用camel-spring boot starter运行kafka消费者应用程序。SpringBoot应用程序实现CommandLineRunner。在我的应用程序中配置了以下属性。 我试图在端口8080上公开springboot执行器指标,但我在公开endpoint方面面临挑战,因为它是非Web应用程序。urlhttp://localhost:8080/actuator/metrics给
问题内容: 我想在AngularJS应用程序中添加一些实用程序功能。例如: 将它们添加为服务的最佳方法是吗?从我所阅读的内容中我可以做到,但是然后我想在HTML页面中使用它们,因此如果它们在服务中仍然可行吗?例如,我可以使用以下内容: 有人可以举例说明如何添加这些内容。我应该创建服务还是有其他实现方法。最重要的是,我希望将这些实用程序功能存储在文件中,而不要与主要设置的另一部分结合使用。 我了解有
问题内容: 有没有一种方法可以在网站上添加一些自定义字体而不使用图像,Flash或其他图形? 例如,当我在一个婚礼网站上工作时,发现该主题有很多不错的字体。但是我找不到在服务器上添加该字体的正确方法。以及如何将CSS中的字体包含在HTML中?没有图形就可以做到吗? 问题答案: 这可以通过CSS完成: 如果您使用TrueType字体(TTF)或Web开放字体格式(WOFF),则所有常规浏览器均支持该
我试图在Firebase中创建一个动态链接,当我选择android应用程序时,它显示一个错误,说“将SHA-1添加到这个android应用程序”,我已经添加了一个凭据,但我不确定我到底如何“将SHA-1添加到应用程序” 这是怎么做到的?
我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em
我正在制作一个React原生应用程序。我想自定义应用程序图标(意思是你点击启动应用程序的图标)。我已经在谷歌上搜索过了,但我不断地发现不同类型的图标,它们指的是不同的东西。我如何将这些类型的图标添加到应用程序中?