Si utilizamos AnnotationConfiguration addPackage no recrea la base de datos aunque en el hibernate.properties tengamos la propiedad correspondiente: hibernate.hbm2ddl.auto=create
si se utiliza addAnnotatedClass si que la recrea!
domingo, 8 de febrero de 2009
Arrancar Hibernate con AnnotationConfiguration con package no funciona recrear base de datos
Publicado por
Juan Antonio Ruz
en
12:02
0
comentarios
Categorías: hibernate
martes, 27 de enero de 2009
Problema al crear un query con inheritance en ejbql
si tenemos herencia en nuestro modelo de datos y en la consulta EJBQL queremos tomar solo los objetos que se corresponden con uno de los "hijos" accedemos al atributo class y le pasamos la clase sin comillas y directamente en el query,
un ejemplo de cuando funciona y cuando no en ...
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1836
Publicado por
Juan Antonio Ruz
en
4:36
0
comentarios
Categorías: EJBQL, hibernate, Soluciones
martes, 11 de septiembre de 2007
Persistencia de propiedades de tipo Objeto no primitivo: Annotation Type Embedded
Hay que anotar la propiedad objeto con la anotacion @Embedded. Y el objeto en cuestión con la anotacion @Embeddable.
Ej:
@Embedded
ClienteImagen fichero
@Embeddable
public class ClienteImagen {
String imgMini;
String imgZoom;
public String getImgMini() {
return imgMini;
}
public void setImgMini(String imgMini) {
this.imgMini = imgMini;
}
public String getImgZoom() {
return imgZoom;
}
public void setImgZoom(String imgZoom) {
this.imgZoom = imgZoom;
}
}
http://tom.tharrisx.homedns.org/sm3rdpartyref/hibernate-annotations-3.3.0.GA/doc/jpa-api/javax/persistence/Embedded.html
Publicado por
Juan Antonio Ruz
en
5:17
0
comentarios
Categorías: api, hibernate, persistencia
lunes, 25 de junio de 2007
Hibernate anotar una enumeracion
public enum Status {OPEN,CANCELLED,PROCESSING,SHIPPED}
@Column(name="STATUS")
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
Publicado por
Juan Antonio Ruz
en
11:27
0
comentarios
Categorías: hibernate
miércoles, 20 de junio de 2007
Obtener el hibernate Session desde EntityManager
javax.persistence.EntityManager ---------> org.hibernate.Session
Para utizar la API de hibernate desde el EntityManager inyectado desde Seam
@PersistenceContext
private EntityManager em;
Session session = ((HibernateEntityManager) em.getDelegate()).getSession();
Publicado por
Juan Antonio Ruz
en
11:36
0
comentarios
miércoles, 6 de junio de 2007
deleted object would be re-saved by cascadE
La excepción que lanza es la siguiente:
org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations): [es.cafs.model.RecursoProfesorImpl#33]
y ocurría la segunda vez que intentaba borrar un item(RecursoProfesorImagen) de un Set de un Objeto(Profesor), y además el scope era de Conversation, así que el error era que había que refrescar la entidad principal una vez que se volvia a seleccionar la entidad hija.
Publicado por
Juan Antonio Ruz
en
6:17
1 comentarios
viernes, 27 de abril de 2007
NonUniqueObjectException - Illegal attempt to associate a collection with two open sessions
El problema estaba relacionado con los tipos de contexto de Seam e hibernate
Estaba cargando en session unas listas de datos y en contexto (Render phase) de evento hibernate daba error
Publicado por
Juan Antonio Ruz
en
11:24
0
comentarios
lunes, 23 de abril de 2007
error hibernate.hbm2ddl.auto mysql restrictions
Si al utilizar la herramienta de hibernate: hbm2ddl Si tienes un error parecido a éste:
Caused by: java.sql.BatchUpdateException: null, message from server: "Cannot add or update a child row: a foreign key constraint fails (`pruebasevilla/traducciones`, CONSTRAINT `FK6CE29E6294037F2F` FOREIGN KEY (`entidadTraduccion`) REFERENCES `profesores` (`id`))"
Tienes mysql configurado con restricciones, para arreglarlo sigue estos pasos (hay que reconfigurar mysql):
- inicia mysql Server Instance Configuration Wizard
- Selecciona: reconfigure Instance
- Selecciona: detailed Configuration
- Selecciona lo que tu veas yo marqué Developer Machine
- Selecciona:Non-Transactional Database Only
- Selecciona lo que tu veas yo marqué Decision Support(DSS)/OLAP
- Selecciona: Enable TCP/IP Networking
- Selecciona: Enable Strict Mode
- ...
Publicado por
Juan Antonio Ruz
en
7:01
0
comentarios
Categorías: hibernate, MySql, Soluciones
martes, 17 de abril de 2007
miércoles, 11 de abril de 2007
Hibernate y ¿Para qué y cuando usar: equals y hashCode?
Según el tutorial de hibernate-3, esto se hace para utilizar las colecciones de tipo java.util.Set se implementaría así:
Teniendo en cuenta que se hace por el tema de indexación en un java.util.Set
public class Cat {
...
public boolean equals(Object other) {
if (this == other) return true;
if ( !(other instanceof Cat) ) return false;
final Cat cat = (Cat) other;
if ( !cat.getLitterId().equals( getLitterId() ) ) return false;
if ( !cat.getMother().equals( getMother() ) ) return false;
return true;
}
public int hashCode() {
int result;
result = getMother().hashCode();
result = 29 * result + getLitterId();
return result;
}
}
***HAY QUE ACCEDER A LAS PROPIEDADES A TRAVÉS DE SUS ACESORES PORQUE ES DE ESA FORMA QUE HIBERNATE CARGA LAS PROPIEDADES
Publicado por
Juan Antonio Ruz
en
11:08
0
comentarios
Categorías: hibernate, java, Lecciones JAVA
Could not find selected item matching value af:selectOneChoice f:selectItems
Este problema se da cuando en un selecItems no encuentra en la lista de posibles valores el valor seleccionado (selected) aunque veamos que de hecho si existe.
ADF/JSF al intentar seleccionar el valor de la lista de posibles valores lo hace a través del metodo equals() que tenemos que sobreescribir para que compare las claves de negocio y no compare por serialización del objeto (en este caso nunca serian iguales dos instancias con iguales valores de una clase).
Y el problema se produce cuando el acceso a los valores lo hacemos sin el correspondiente metodo interceptado por hibernate (PORQUE SI UTILIZAMOS HIBERNATE ESTAMOS UTILIZANDO POA [programación orientada a aspectos y por lo tanto interceptores] )
por un problema en la implementacion del equals e Hibernate.
La razón de este error es la siguiente:
Al acceder a las propiedades de los objetos sin el metodo adecuado (interceptado por hibernate) es decir los getter, el valor que devuelve es el que tiene por defecto la clase o el que tenga la instancia del objeto en un momento dado del programa.
Publicado por
Juan Antonio Ruz
en
2:38
0
comentarios
Categorías: ADF, AOP, Errores, hibernate, Soluciones