首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >springboot jpa能与netezza数据库一起工作吗?

springboot jpa能与netezza数据库一起工作吗?
EN

Stack Overflow用户
提问于 2018-06-25 18:03:41
回答 2查看 1.1K关注 0票数 1

我正在尝试将我的springboot应用程序连接到我的netezza数据库,但没有成功。我正在尝试使用该教程,网址为:https://www.callicoder.com/spring-boot-rest-api-tutorial-with-mysql-jpa-hibernate/

我用我的netezza数据库url替换了spring.datasource.url,但没有成功。请问如何连接netezza?

EN

回答 2

Stack Overflow用户

发布于 2018-06-25 20:30:43

除了正确配置spring.datasource.url之外,还必须将Netezza JDBC驱动程序添加到类路径中。根据this article on the IBM Knowledge Center的说法,您应该能够为正确的环境下载客户端工具:

适用于支持的客户端操作系统的

nz-*client-version.tar.z Netezza客户端安装软件包。IBM Netezza客户端软件包可用于一组常见的操作系统环境,例如:

用于英特尔/AMD上的Linux的

  • nz-linuxclient-version.tar.gz,包括ODBC/JDBC和Netezza命令行utilities
  • ...

除此之外,您还必须正确配置方言。据我所知,Hibernate ( Spring boot中的默认JPA提供程序)不支持Netazza方言。您可以在their Javadoc上找到支持的方言的完整列表。

但是,由于Netazza7.x是基于PostgreSQL 7.x的,所以您可以使用PostgreSQL方言之一来使其工作,尽管有两点说明:

  1. Hibernate不再提供支持PostgreSQL 7.x的方言
  2. Netazza没有保持向后兼容性,因此它可能无法工作

所以回答你的问题,它不是正式支持的Hibernate,所以它可能不会工作。可供选择的有:

  1. 为Netezza编写自己的Hibernate方言。这需要一些工作,但将允许您使用您的方言在更低级的JdbcTemplate中重用其他projects.
  2. Using。这意味着你将不得不使用SQL本身,而且你可能不得不自己做事情。
票数 1
EN

Stack Overflow用户

发布于 2018-12-14 13:36:15

对于像我这样的懒人来说,

1)你需要首先在你的机器上安装jar,这个SO answer解释了这一点。

2)添加依赖关系

代码语言:javascript
复制
<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自定义方言。请注意,这些是我的用例所需的数据类型。对于任何其他数据类型,您必须显式添加它们。

代码语言:javascript
复制
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) spring boot的属性

代码语言:javascript
复制
# 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51020837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档