jueves, 27 de septiembre de 2007

Not updating entity

En RegionGen no me está actualizando el objeto relacionado. A la vuelta del form de update xwork no puede setear el nuevo Country relacionado. Posiblemente por una restricción de hibernate, puesto que el objeto es transaccional:
pojo.Country.id [java.lang.IllegalAccessException: Class ognl.OgnlRuntime can not access a member of class xxxx.pojo.Country with modifiers "private"]
El setter del Id en el pojo es publico, pero seguramente la factory de Spring-Hiber debe restringir el acceso.

Cambio de seteo en el action.
L
eo el string y recupero el object a relacionar a través del manager para luego asignarlo

Cambio de annotation en pojo:

La opción updatable a true, sino no lo cambia
@ManyToOne
@JoinColumn(name="country_id", nullable=false, updatable=true)

viernes, 14 de septiembre de 2007

Invalid field value (SQL)

Al momento de la inserción tiraba una exception por invalid field 'id' value. En este caso era porque la tabla no estaba generada con el campo 'id' en autoincrement.

viernes, 31 de agosto de 2007

JPA o DaoSupport ?

Con Spring se puede implementar la persistencia con JPA, aprovechando las annontations:
bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"

Luego, los accesos en los dao, se hacen genéricos a través del entityManager, pero los métodos son reducidos y no tenemos la potencialidad de hibernate para consultas más flexibles.

Sino, la alternativa de heredar de HibernateDaoSupport de Spring pero al parecer no se pueden usar las annotations de persistencia por lo que las entidades deben mapearse en un xml aparte, externo al .java con los problemas de cambios que conlleva. Para está opción en el xml, el bean sessionFactory que se cablea en dicha clase:
bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"

jueves, 23 de agosto de 2007

Hibernate Exception (library)

Al correr fuera de eclipse, parece haber incompatibilidad de jars, la clase perdida se encuentra en un jar dentro del classpath....

Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException
at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator
(ASTQueryTranslatorFactory.java:35)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:74)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCa
che.java:72)

Existe algun problema de versiones con antlr, corregido con otra version del jar.

martes, 14 de agosto de 2007

BLOB type Hibernate

Algo de lectura http://www.hibernate.org/56.html para LOB data in hibernate.

miércoles, 8 de agosto de 2007

JPA queries

Los métodos de la interface EntityManager de JPA no tienen la busqueda byExample de Hibernate.

martes, 7 de agosto de 2007

JPA Exception (detached)

Al momento de persistir un objeto:
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist


Debido a la annotation @GeneratedValue en el pojo, el campo referenciado debe estar vacio, se generará a través del JPA Vendor.
Sacando esta notación la inserción se hizo sin problemas.

lunes, 6 de agosto de 2007

JPA

XML descriptor
En JPA no es necesario que las entidades estén listadas en un descriptor xml (ej persistence.xml), es posible mapear las clases directamente a través de las notaciones (@Entity, @Id, ...) dispuestas en los POJOS.

viernes, 3 de agosto de 2007

Spring JPA

La clase PersistenceAnnotationBeanPostProcessor
sdf es la que procesa las anotaciones PersistenceUnit and PersistenceContext para injectar los recursos JPA correspondientes (EntityManagerFactory y EntityManager).

Hibernate & Spring

JPA Entities Id

Caso Entity Cabecera, id consiste en codigo (String) + version (number)
Un string puede ser id?

viernes, 27 de julio de 2007

JPA java persistence api

Artículo en sun http://java.sun.com/developer/technicalArticles/J2EE/jpa/index.html
con descripciones básicas.

Tutorial de implementación con JPA en:
http://dev2dev.bea.com/pub/a/2006/03/jpa-spring-medrec.html

Tutorial Struts2+spring2+JPA
http://struts.apache.org/2.x/docs/struts-2-spring-2-jpa-ajax.html

En el primer artículo, la persistencia se hace con DAOs, en el segundo se hace directamente a través del objeto EntityManager. Se utilización notaciones en los pojos para que el Entity pueda identificar los objetos a persistir.

miércoles, 18 de julio de 2007

Generic Data Access Objects

El articulo http://www.hibernate.org/328.html explica como desligar el acceso a datos de cualquier implementación. El ejemplo muestra clases genéricas de Java 5 para crear las interfaces DAO y luego la implementación con Hibernate

El plugin JPA tools de Eclipse trae generacion de entities from tables