Buongiorno,
ho un problema con Netbeans e PostGis.
Non riesco ad eseguire il mapping ad un tipo geometrico all'interno di una classe Entity.
Di seguito riporto in dettaglio ogni singolo passaggio.
In PostGres ho creato una Tabella "Addresses" con un campo di tipo geometrico per la memorizzazione delle coordinate geometriche di un luogo.
In Netbeans, ho creato un nuovo progetto "Enterprise Application" (JavaEE) con annesso un modulo EJB, un modulo Web e un modulo Application client.
Nel modulo EJB ho:
- creato la Persistence Unit
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persisten...stence_1_0.xsd">
<persistence-unit name="EnterpriseApplication1-ejbPU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence </provider><jta-data-source>Prova</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
- creato un Entity Class della tabella "Addresses"
@Entity
@Table(name = "addresses", catalog = "Prova", schema = "public")
@NamedQueries({@NamedQuery(name = "Addresses.findAll", query = "SELECT a FROM Addresses a")
public class Addresses implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "uid")
private Integer uid;
@Basic(optional = false)
@Lob
@Column(name = "longitude_latitude_point")
private PGgeometry longitudeLatitudePoint;
...
}
- creato un Session Bean (Stateless e Remote) con il metodo seguente:
@Stateless
public class NewSessionBean implements NewSessionRemote {
@PersistenceUnit(unitName = "EnterpriseApplication1-ejbPU")
private EntityManagerFactory emf ;
public List<Addresses> getAddresses() {
EntityManager em = null;
try {
em = emf.createEntityManager();
Query qry = em.createNamedQuery("Addresses.findAll");
return qry.getResultList();
} finally {
if (em != null) {
em.close();
}
}
}
}
- nel modulo Application client all'interno del metodo main chiamato il metodo
public class Main {
@EJB
private static NewSessionRemote newSessionBean;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Records: " + newSessionBean.getAddresses());
}
}
Eseguendo ilprogetto ottengo una eccezione che non riesco a gestire:
Registering ad hoc servlet: WebPathPath: context root = "/EnterpriseApplication1", path = "/EnterpriseApplication1-app-client'
Java Web Start services started for application com.sun.enterprise.appclient.jws.ApplicationConten tOrigin@1fc1cb1 registration name=EnterpriseApplication1
com.sun.enterprise.appclient.jws.NestedAppclientCo ntentOrigin@bfa97b registration name=EnterpriseApplication1, context root=/EnterpriseApplication1/EnterpriseApplication1-app-client, module name=
, parent=EnterpriseApplication1
SQL Error: 0, SQLState: 22003
Il valore «0101000020E610000091ED7C3F35662440DD274701A2C8464 0» non è adeguato al tipo «long».
EJB5018: An exception was thrown during an ejb invocation on [NewSessionBean]
javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystem Exception(BaseContainer.java:3894)
at com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:3794)
at com.sun.ejb.containers.BaseContainer.postInvokeTx( BaseContainer.java:3596)
at com.sun.ejb.containers.BaseContainer.postInvoke(Ba seContainer.java:1379)
at com.sun.ejb.containers.BaseContainer.postInvoke(Ba seContainer.java:1316)
at com.sun.ejb.containers.EJBObjectInvocationHandler. invoke(EJBObjectInvocationHandler.java:210)
at com.sun.ejb.containers.EJBObjectInvocationHandlerD elegate.invoke(EJBObjectInvocationHandlerDelegate. java:117)
at $Proxy43.getAdresses(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveT ie._invoke(ReflectiveTie.java:154)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestD ispatcherImpl.dispatchToServant(CorbaServerRequest DispatcherImpl.java:687)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestD ispatcherImpl.dispatch(CorbaServerRequestDispatche rImpl.java:227)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediato rImpl.handleRequestRequest(CorbaMessageMediatorImp l.java:1846)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediato rImpl.handleRequest(CorbaMessageMediatorImpl.java: 1706)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediato rImpl.handleInput(CorbaMessageMediatorImpl.java:10 88)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.Requ estMessage_1_2.callback(RequestMessage_1_2.java:22 3)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediato rImpl.handleRequest(CorbaMessageMediatorImpl.java: 806)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediato rImpl.dispatch(CorbaMessageMediatorImpl.java:563)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediato rImpl.doWork(CorbaMessageMediatorImpl.java:2567)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoo lImpl$WorkerThread.run(ThreadPoolImpl.java:555)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not execute query
at org.hibernate.ejb.AbstractEntityManagerImpl.throwP ersistenceException(AbstractEntityManagerImpl.java :637)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImp l.java:74)
at biz.edsteam.server.sessions.NewSessionBean.getAdre sses(NewSessionBean.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.security.application.EJBSecurit yManager.runMethod(EJBSecurityManager.java:1011)
at com.sun.enterprise.security.SecurityUtil.invoke(Se curityUtil.java:175)
at com.sun.ejb.containers.BaseContainer.invokeTargetB eanMethod(BaseContainer.java:2920)
at com.sun.ejb.containers.BaseContainer.intercept(Bas eContainer.java:4011)
at com.sun.ejb.containers.EJBObjectInvocationHandler. invoke(EJBObjectInvocationHandler.java:203)
... 17 more
Caused by: org.hibernate.exception.DataException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert( SQLStateConverter.java:77)
at org.hibernate.exception.JDBCExceptionHelper.conver t(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:222 3)
at org.hibernate.loader.Loader.listIgnoreQueryCache(L oader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoa der.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(Que ryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performLis t(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.ja va:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:7 9)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImp l.java:65)
... 27 more
Caused by: org.postgresql.util.PSQLException: Il valore «0101000020E610000091ED7C3F35662440DD274701A2C8464 0» non è adeguato al tipo «long».
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toLong (AbstractJdbc2ResultSet.java:2736)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getLon g(AbstractJdbc2ResultSet.java:2032)
at org.postgresql.jdbc3.Jdbc3ResultSet.getBlob(Jdbc3R esultSet.java:52)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getBlo b(AbstractJdbc2ResultSet.java:337)
at org.hibernate.type.BlobType.get(BlobType.java:57)
at org.hibernate.type.BlobType.nullSafeGet(BlobType.j ava:111)
at org.hibernate.type.AbstractType.hydrate(AbstractTy pe.java:81)
at org.hibernate.persister.entity.AbstractEntityPersi ster.hydrate(AbstractEntityPersister.java:2096)
at org.hibernate.loader.Loader.loadFromResultSet(Load er.java:1380)
at org.hibernate.loader.Loader.instanceNotYetLoaded(L oader.java:1308)
at org.hibernate.loader.Loader.getRow(Loader.java:120 6)
at org.hibernate.loader.Loader.getRowFromResultSet(Lo ader.java:580)
at org.hibernate.loader.Loader.doQuery(Loader.java:70 1)
at org.hibernate.loader.Loader.doQueryAndInitializeNo nLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:222 0)
... 35 more
Qualcuno può per cortesia darmi un aiuto?
Grazie mille
Laura

Rispondi quotando