Galera, estou tentando inserir um registro na tabela Avaliacoes, porém me retorna o erro abaixo:
[6/22/11 1:25:43:988 BDST] 00000047 JDBCException W org.hibernate.util.JDBCExceptionReporter logExceptions SQL Error: 1452, SQLState: 23000
[6/22/11 1:25:44:019 BDST] 00000047 JDBCException E org.hibernate.util.JDBCExceptionReporter logExceptions Cannot add or update a child row: a foreign key constraint fails (`appfbpor/avaliacoes`, CONSTRAINT `avaliacoes_ibfk_1` FOREIGN KEY (`MAT_PRO`) REFERENCES `profissionais` (`MAT_PRO`))
[6/22/11 1:25:44:051 BDST] 00000047 AbstractFlush E org.hibernate.event.def.AbstractFlushingEventListener performExecutions Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:249)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at com.brq.feedback.data.avaliacao.AvaliacaoDao.save(AvaliacaoDao.java:17)
at com.brq.feedback.business.avaliacao.AvaliacaoBO.save(AvaliacaoBO.java:12)
at com.brq.feedback.business.avaliacao.ManterAvaliacaoFacade.save(ManterAvaliacaoFacade.java:17)
at com.brq.feedback.control.cargaExcel.CargaExcelView.save(CargaExcelView.java:226)
at com.brq.feedback.control.cargaExcel.CargaExcelView.salvaServidor(CargaExcelView.java:80)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
Entidades:
AvaliacaoTO@Entity
@Table(name="avaliacoes")
@NamedQueries(
{
@NamedQuery(name="avaliacoes.obterPorStatus", query="from AvaliacaoTO where status = :param")
}
)
public class AvaliacaoTO implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private AvaliacaoCK codigo;
@Embeddable
public class AvaliacaoCK implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name="COD_AVA")
private int codigo;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="MAT_PRO") //Foreign Key
private ProfissionalTO profissional;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="COD_IND") //Foreign Key
private IndicadorTO indicador;
@Entity
@Table(name="profissionais")
@NamedQueries(
{
@NamedQuery(name="profissionais.obterPorId", query="from ProfissionalTO where codigo = :param")
}
)
public class ProfissionalTO implements Serializable {
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="MAT_PRO")
private Integer codigo;
@OneToMany(mappedBy="codigo.profissional")
private List<AvaliacaoTO> avaliacao;
@Entity
@Table(name="indicadores")
public class IndicadorTO implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="COD_IND")
private int codigo;
@OneToMany(mappedBy="codigo.indicador")
private List<AvaliacaoTO> avaliacao;
aval = new AvaliacaoTO();
prof = new ProfissionalTO();
indi = new IndicadorTO();
AvaliacaoCK ack = new AvaliacaoCK();
ack.setCodigo(1);
indi.setCodigo(1);
prof.setCodigo(1);
ack.setProfissional(prof);
ack.setInidicador(indi);
aval.setCodigo(ack);
new ManterAvaliacaoFacade().save(aval);
Alguém tem idéia do q pode ser? Muito obrigado!
