使用Spring Roo、Eclipse、GWT和Hibernate连接PostgreSQL数据库失败。

4
我刚开始使用Roo,并对其可能性感到兴奋。但是我在尝试连接我的PostgreSQL数据库时遇到了问题。我已经在他们的论坛和互联网上搜索过,但没有解决我的问题。这是我的环境:
- Eclipse 3.6.1 - GWT 2.1.1 - SpringSource Tool Suite 2.5.2.RELEASE - Spring Roo 1.1.1.RELEASE - PostgreSQL v.8.3.11 数据库
我采取的步骤: - 从Spring Dashboard创建一个新的Spring Roo项目 - 打开Roo shell并执行:
persistence setup --provider HIBERNATE --database POSTGRES
  • 打开database.properties文件并添加:

--用户名 --密码 --网址

  • 回到Roo shell并执行:

    database introspect --schema no-schema-required

这将弹出对话框,显示可用于postgresql的附加组件。

addon install id --searchResultId 01

roo返回:

Target resource(s):
-------------------
spring-roo-postgres-jdbc4-wrapper (9.0.0.801_jdbc4_0001)

Deploying...done.

当我自动完成数据库内省命令时,我会得到以下结果:
database introspect --schema unable-to-obtain-connection

当我执行它时,出现“org.postgresql.Driver”不可用的JDBC驱动程序。

因此,我认为我的连接属性不正确,但我不确定。我们的数据库使用SSL,并且我必须将以下内容添加到我的连接URL中才能从其他项目连接:

jdbc:postgresql://10.104.0.41:5432/mydb?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

这是我数据库属性文件的源代码:

database.driverClassName=org.postgresql.Driver
database.url=jdbc\:postgresql\://10.104.0.41\:5432/mydb
database.username=xxx
database.password=...
ssl=true
sslfactory=org.postgresql.ssl.NonValidatingFactory

我曾试过在文件中删除'\',但没有任何改变,并尝试了各种连接url的组合。我认为url是问题所在,但目前还不确定。 另外有件奇怪的事情是,昨天当我尝试使用roo1.1.1.RELEASE安装驱动程序附加组件时,由于密钥认证问题超时了。我使用roo1.1.2.BUILD-SNAPSHOT并成功解决了这个问题,但然后尝试运行introspect命令时却得到了NPE错误。今天我安装了全新的SpringSource Tool Suite,删除了我的.m2存储库,并使用roo1.1.1启动了一个新项目,能够安装驱动程序但现在无法连接。任何帮助都将不胜感激,因为我被卡住了,直到我可以逆向工程一些表格。 我还应该注意的是,我可以通过Eclipse中的数据源浏览器连接到数据库,并使用这些连接属性和连接url连接。我还连接了其他未使用roo和hibernate的项目。我也可以通过roo连接到本地Derby数据库。
非常感谢, Mitch
2个回答

1

对于那些现在来到这个页面的人。要解决这个问题,你必须执行:

addon install id --searchResultId 02

如果您使用较新版本的Postgre,则9.0.801.0001 Postgres是正确的版本。


0

我对“roo”一无所知,因此您可能需要调整我的答案以使其适用于roo。

当我执行它时,我得到了'org.postgresql.Driver'的JDBC驱动程序不可用

这意味着JDBC驱动程序JAR不在您的类路径中。转到此页面,下载适当的驱动程序(如果您有疑问,请选择JDBC 4),并将其添加到您的类路径中。如果您正在使用maven,则可以添加此依赖项(请调整版本标签):

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>...</version>
</dependency>

2
谢谢回复,我最初尝试过那个方法,但是结果发现roo与jdbc4驱动不兼容,在我切换到jdbc3版本后才成功建立连接。 - mcfar
一个用户要求我提供更多关于解决方案的细节,所以在这里。要添加jdbc3驱动程序,请从roo shell中选择该选项。当执行>>database introspect --schema no-schema-required命令时,应该会列出jdbc3驱动程序,您可以使用addon install id <输入正确的搜索id>来安装驱动程序。 - mcfar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接