我正在尝试将springboot应用程序连接到我的netezza数据库,但是没有运气。我正尝试在https://www.callicoder.com/spring-boot-rest-api-tutorial-with-mysql-jpa-hibernate/
上使用该教程。我用netezza数据库url替换了spring.datasource.url,但是没有运气。我如何连接到netezza?
答案 0 :(得分:1)
在正确配置spring.datasource.url
之后,您还必须将Netezza JDBC驱动程序添加到类路径中。根据{{3}},您应该能够下载适用于正确环境的客户端工具:
nz-*client-version.tar.z
支持的客户端的Netezza客户端安装软件包 操作系统。 IBM Netezza客户端软件包可用于 常见的一组操作系统环境,例如:
nz-linuxclient-version.tar.gz
(适用于Intel / AMD上的Linux),包括ODBC / JDBC和Netezza命令行实用程序- ...
此外,还必须正确配置方言。据我所知,Hibernate(Spring引导中的默认JPA提供程序)不支持Netazza方言。您可以在this article on the IBM Knowledge Center上找到支持的方言的完整列表。
但是,由于Netazza基于PostgreSQL 7.x,因此您可以使用PostgreSQL方言之一使它运行,尽管有两个说明:
因此,要回答您的问题,Hibernate并未正式支持它,因此它可能无法正常工作。替代方法是:
JdbcTemplate
。这意味着您必须使用SQL本身,并且可能必须自己做。答案 1 :(得分:0)
对于像我这样的懒人,
1)您需要先在计算机上安装jar,此SO answer对此进行了说明。
2)添加依赖项
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>7.4.1-jdbc3</version>
</dependency>
<dependency>
<groupId>net.sf.squirrel-sql.plugins</groupId>
<artifactId>netezza</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.netezza</groupId>
<artifactId>netezza</artifactId>
<version>1.0</version>
</dependency>
3)Netezza自定义方言。请注意,这些是我的用例所需的数据类型。对于任何其他数据类型,您必须显式添加它们。
import org.hibernate.dialect.PostgreSQLDialect;
import org.hibernate.type.StandardBasicTypes;
@SuppressWarnings("deprecation")
public class NetezzaDialect extends PostgreSQLDialect {
public NetezzaDialect() {
registerHibernateType(Types.CHAR, StandardBasicTypes.STRING.getName());
registerHibernateType(Types.VARCHAR, StandardBasicTypes.STRING.getName());
registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
registerHibernateType(Types.BIGINT, StandardBasicTypes.LONG.getName());
registerHibernateType(Types.SMALLINT, StandardBasicTypes.SHORT.getName());
registerHibernateType(Types.DATE, StandardBasicTypes.DATE.getName());
}
}
4)弹簧靴的属性
# Netezza properties
spring.datasource.url=jdbc:netezza://{host}:{port}/{db/ catalog}
spring.datasource.username=
spring.datasource.password=
spring.jpa.properties.hibernate.dialect=your.org.config.NetezzaDialect
spring.datasource.driver-class-name=org.netezza.Driver