Foros del Web » Programación para mayores de 30 ;) » Java »

Hibernate no me encuentra la PK de una tabla

Estas en el tema de Hibernate no me encuentra la PK de una tabla en el foro de Java en Foros del Web. Hola, buenas. Soy relativamente novato en Hibernate, y me estoy dando de tortas con él. Tengo el siguiente problema: Estoy intentando hacer una aplicación que ...
  #1 (permalink)  
Antiguo 08/08/2011, 04:51
 
Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 12 años, 8 meses
Puntos: 0
Hibernate no me encuentra la PK de una tabla

Hola, buenas.

Soy relativamente novato en Hibernate, y me estoy dando de tortas con él. Tengo el siguiente problema:

Estoy intentando hacer una aplicación que haga personajes de un juego de rol de mesa llamado AD&D, y tengo una clase TiradasDTO en la cual se insertan los valores que se guardarán en la base de datos (una tabla TIRADAS con las características que proporciona el DTO). Esa tabla tiene un ID, recibida mediante un secuenciador en Oracle, la BD que uso.

El problema es que al hacer el save me dice que no encuentra la clave principal.

El DTO:

public class TiradasDTO {

private Integer fuerza;
private Integer destreza;
private Integer constitucion;
private Integer inteligencia;
private Integer sabiduria;
private Integer carisma;
private String nombre;
private Long id;

public TiradasDTO(){}

private Long getId(){
return id;
}

private void setId(Long id){
this.id=id;
}

public String getNombre() {
nombre="xxx";
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}
public Integer getFuerza() {
fuerza=Integer.parseInt(TiradasVista.getValorfue() );
return fuerza;
}
public void setFuerza(Integer fuerza) {
this.fuerza = fuerza;
}
public Integer getDestreza() {
destreza=Integer.parseInt(TiradasVista.getValordes ());
return destreza;
}
public void setDestreza(Integer destreza) {
this.destreza = destreza;
}
public Integer getConstitucion() {
constitucion=Integer.parseInt(TiradasVista.getValo rcon());
return constitucion;
}
public void setConstitucion(Integer constitucion) {
this.constitucion = constitucion;
}
public Integer getInteligencia() {
inteligencia=Integer.parseInt(TiradasVista.getValo rint());
return inteligencia;
}
public void setInteligencia(Integer inteligencia) {
this.inteligencia = inteligencia;
}
public Integer getSabiduria() {
sabiduria=Integer.parseInt(TiradasVista.getValorsa b());
return sabiduria;
}
public void setSabiduria(Integer sabiduria) {
this.sabiduria = sabiduria;
}
public Integer getCarisma() {
carisma=Integer.parseInt(TiradasVista.getValorcar( ));
return carisma;
}
public void setCarisma(Integer carisma) {
this.carisma = carisma;
}
}


El archivo de mapeo a la tabla TIRADAS

<hibernate-mapping>
<class name="TiradasDTO" table="TIRADAS" schema="ESQUEMA">
<id name="id" type="long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence" >
<param name="secuence">sec_tiradas</param>
</generator>
</id>
<property name="nombre" type="java.lang.String">
<column name="NOMBRE" precision="100"/>
</property>
<property name="fuerza" type="java.lang.Integer">
<column name="FUERZA" precision="22" scale="0" />
</property>
<property name="destreza" type="java.lang.Integer">
<column name="DESTREZA" precision="22" scale="0" />
</property>
<property name="constitucion" type="java.lang.Integer">
<column name="CONSTITUCION" precision="22" scale="0" />
</property>
<property name="inteligencia" type="java.lang.Integer">
<column name="INTELIGENCIA" precision="22" scale="0" />
</property>
<property name="sabiduria" type="java.lang.Integer">
<column name="SABIDURIA" precision="22" scale="0" />
</property>
<property name="carisma" type="java.lang.Integer">
<column name="CARISMA" precision="22" scale="0" />
</property>
</class>
</hibernate-mapping>


Y el error que recibo:

org.hibernate.exception.ConstraintViolationExcepti on: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert( SQLStateConverter.java:94)
at org.hibernate.exception.JDBCExceptionHelper.conver t(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(Ab stractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(Ac tionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(Ac tionQueue.java:167)
at org.hibernate.event.def.AbstractFlushingEventListe ner.performExecutions(AbstractFlushingEventListene r.java:321)
at org.hibernate.event.def.DefaultFlushEventListener. onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.j ava:1028)
at org.hibernate.impl.SessionImpl.managedFlush(Sessio nImpl.java:366)
at org.hibernate.transaction.JDBCTransaction.commit(J DBCTransaction.java:137)
at david.casa.hibernate.fachadas.Fachada_tiradas.Guar dar_personaje(Fachada_tiradas.java:25)
at david.casa.vista.TiradasVista.actionPerformed(Tira dasVista.java:686)
at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.sql.BatchUpdateException: ORA-02291: restricción de integridad (ESQUEMA.TIRADAS_FK) violada - clave principal no encontrada

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateE xception(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.execute Batch(OraclePreparedStatement.java:10720)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch( BatchingBatcher.java:70)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(Ab stractBatcher.java:268)


Qué hago mal? Es por las relaciones? (no debería ser así, ya que a cada personaje le corresponde un sólo objeto tiradas... Y no sé muy bien porqué me dice que la no encuentra la PK, cuando al hacer debug, en el objeto DTO están todos los campos que necesita la tabla, la ID incluída, y con un valor válido.

Gracias desde ya por la ayuda!

Etiquetas: hibernate
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:05.