After struggling for days, I found this solution:
Don't connect to your database through a datasource defined on your wildfly. Instead, in your persistence.xml:
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> <persistence-unit name="org.hibernate.events.jpa" transaction-type="JTA"> <properties> <property name="hibernate.dialect" value="org.hibernate.spatial.dialect.postgis.PostgisDialect"/> <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/> <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/yourdatabase"/> <property name="hibernate.connection.username" value="username"/> <property name="hibernate.connection.password" value="password"/> <property name="hibernate.connection.pool_size" value="5"/> <property name="hibernate.show_sql" value="false"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.max_fetch_depth" value="5"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit>
Because the early 5.0.x versions of hibernate apparently had no proper integration of hibernate-spatial and to avoid classpath problems, I added the file jboss-deployment-structure.xml to my META-INF:
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <exclusions> <module name="org.hibernate" /> <module name="org.postgresql" /> </exclusions> </deployment> </jboss-deployment-structure>
This will prevent the wildfly provided hibernate to be used by your deployment so that you can instead add a dependency for the most recent hibernate version (5.1.0 as of this writing). You will then need to add dependencies for hibernate, hibernate-spatial and postgresql-jdbc.
Also note that hibernate 5 doesn't require the @Type annotation anymore.
I have managed to get my project working with the settings above and one of my entities featuring the following attribute / column:
@Column(columnDefinition = "geometry(Point,4326)") private Point position;
I hope it helps, good luck!
Edit: Using this approach, you need to add your postgresql jdbc driver as a dependency to your project.
Edit:
I have prepared a working sample project demonstrating the use of wf10/hibernate5/postgis - check it out on github:
https://github.com/Pulvertoastmann/wf10postgis/