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.