我使用Wildfly8和postgresql作为我的数据库。我需要org.postgresql.PGConnection才能实现postgresql的LISTEN / NOTIFY功能。
我的代码如下:
private Connection conn;
private org.postgresql.PGConnection pgconn;
Conn = entityManager.unwrap(java.sql.Connection.class);
this.pgconn = conn.unwrap(org.postgresql.PGConnection.class);
我得到以下例外:
java.sql.SQLException: Not a wrapper for: org.postgresql.PGConnection
这里有什么问题?
答案 0 :(得分:0)
在这种情况下,您的第一个Connection实例可能是代理对象。如果您使用Wildfly,您必须这样做:
((WrappedConnection)conn).getUnderlyingConnection().unwrap(PgConnection.class);
此外,您必须在jboss-deployment-structure.xml中声明如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.jboss.ironjacamar.jdbcadapters" />
<module name="org.postgresql" />
</dependencies>
</deployment>
</jboss-deployment-structure>