Olá Pessoal,
Possuo as seguintes entidades,
Funcionario.java
@Entity
@Table(name = "TB_FUNCIONARIO")
public class Funcionario extends PessoaFisica {
/** serialversionUID **/
private static final long serialVersionUID = 1350744945734500949L;
/** lista de idiomas do funcionário **/
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "TB_FUNCIONARIO_IDIOMA", joinColumns = @JoinColumn(name = "ID_PESSOA", referencedColumnName = "ID_PESSOA"), inverseJoinColumns = @JoinColumn(name = "ID_IDIOMA", referencedColumnName = "ID_IDIOMA"), uniqueConstraints = @UniqueConstraint(columnNames = {
"ID_PESSOA", "ID_IDIOMA" }))
@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private List<Idioma> idiomas;
Idioma.java
@Entity
@Table(name = "TB_IDIOMA")
@TableGenerator(name = "idGenerator", table = "TB_SEQUENCE", allocationSize = 1, pkColumnName = "SEQ_NAME", valueColumnName = "SEQ_COUNT", pkColumnValue = "SEQ_IDIOMA")
public class Idioma extends EntityObject {
/** serialversionUID **/
private static final long serialVersionUID = -4488811991972462034L;
/** identificador **/
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "idGenerator")
@Column(name = "ID_IDIOMA", length = 10, precision = 0, insertable = true, updatable = false)
private Long id;
/** descrição do idioma **/
@Column(name = "DS_IDIOMA", length = 120, precision = 0, insertable = true, updatable = true)
private String idioma;
O sistema está deletando normalmente os registros orfãos da tabela idiomas, no entanto é mostrado o seguinte erro no console:
47617 [http-8080-3] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 547, SQLState: 23000
47617 [http-8080-3] ERROR org.hibernate.util.JDBCExceptionReporter - The DELETE statement conflicted with the REFERENCE constraint “FKD395714A80D93B48”. The conflict occurred in database “xxxxxx”, table “dbo.TB_FUNCIONARIO_IDIOMA”, column ‘ID_IDIOMA’.
47618 [http-8080-3] ERROR org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: could not delete: [br.com.mccann.activecollab.domain.entity.pessoa.Idioma#38]
Caused by: java.sql.SQLException: The DELETE statement conflicted with the REFERENCE constraint “FKD395714A80D93B48”. The conflict occurred in database “xxxxxxx”, table “dbo.TB_FUNCIONARIO_IDIOMA”, column ‘ID_IDIOMA’.
at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:365)
Desde já agradeço pela ajuda.