jueves, 27 de septiembre de 2007
Not updating entity
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.
Leo 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)
viernes, 31 de agosto de 2007
JPA o DaoSupport ?
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)
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.
at org.hibernate.engine.query.HQLQueryPlan.
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
miércoles, 8 de agosto de 2007
JPA queries
martes, 7 de agosto de 2007
JPA Exception (detached)
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
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 PersistenceAnnotationBeanPostProcessorsdf es la que procesa las anotaciones PersistenceUnit and PersistenceContext para injectar los recursos JPA correspondientes (EntityManagerFactory y EntityManager).
Hibernate & Spring
The LoadTimeWeaver interface is a Spring-provided class that allows JPA ClassTransformer instances to be plugged in a specific manner depending on the environment (web container/application server)
When is load time weaving required?
Not all JPA providers impose the need of a JDK agent (Hibernate being an example). If your provider does not require an agent or you have other alternatives (for example applying enhancements at build time through a custom compiler or an ant task) the load time weaver should not be used.
JPA Entities Id
Un string puede ser id?
viernes, 27 de julio de 2007
JPA java persistence api
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 plugin JPA tools de Eclipse trae generacion de entities from tables