Mostrando entradas con la etiqueta hibernate. Mostrar todas las entradas
Mostrando entradas con la etiqueta hibernate. Mostrar todas las entradas

domingo, 8 de febrero de 2009

Arrancar Hibernate con AnnotationConfiguration con package no funciona recrear base de datos

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!

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

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

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;
}

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();

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.

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

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):

  1. inicia mysql Server Instance Configuration Wizard
  2. Selecciona: reconfigure Instance
  3. Selecciona: detailed Configuration
  4. Selecciona lo que tu veas yo marqué Developer Machine
  5. Selecciona:Non-Transactional Database Only
  6. Selecciona lo que tu veas yo marqué Decision Support(DSS)/OLAP
  7. Selecciona: Enable TCP/IP Networking
  8. Selecciona: Enable Strict Mode
  9. ...

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

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.