Como se comentó, me pareció que Hibernate usará de manera predeterminada un dialecto espacial que será el primero que encuentre entre los disponibles, y en ese caso fue Oracle, a pesar de lo que se especificó en el archivo persistence.xml.
La primera solución que encontré fue anotar en la entidad que para GeometryUserType usaría el dialecto de Postgis como en:
@TypeDefs({@TypeDef(name="org.hibernatespatial.GeometryUserType",
parameters={@org.hibernate.annotations.Parameter(name="dialect",value="org.hibernatespatial.postgis.PostgisDialect")},
typeClass=org.hibernatespatial.GeometryUserType.class)})
Eso obligaría a Hibernate a usar Postgis para esa entidad.
La segunda solución, que funcionó mejor para mí (necesito poder configurar esto y usar diferentes dialectos para una entidad según la unidad de persistencia y el entorno) es usar un archivo de mapeo en la unidad de persistencia.
<persistence-unit name="persistence_unit_name" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jta_data_source_name</jta-data-source>
<mapping-file>${hibernate.mappingfile}</mapping-file>
<class>(...)</class>
En mi archivo pom, haré ese archivo de mapeo al que necesito, usando perfiles y variables de Maven.
<hibernate.mappingfile>oracle.hbm.xml</hibernate.mappingfile>
O:
<hibernate.mappingfile>postgis.hbm.xml</hibernate.mappingfile>
Entonces tendría, por ejemplo, un postgis.hbm.xml
archivo:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<typedef name="org.hibernatespatial.GeometryUserType" class="org.hibernatespatial.GeometryUserType" >
<param name="dialect">org.hibernatespatial.postgis.PostgisDialect</param>
</typedef>
</hibernate-mapping>
Y un oracle.hbm.xml
:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<typedef name="org.hibernatespatial.GeometryUserType" class="org.hibernatespatial.GeometryUserType" >
<param name="dialect">org.hibernatespatial.oracle.OracleSpatial10gDialect</param>
</typedef>
</hibernate-mapping>
Me pregunto si hay una mejor manera de hacer esto, pero ninguna que pude encontrar durante estos días, o que me respondieron aquí. Espero que esto ayude a alguien.