JPA + Hibernate - Problemas ao excluir registro (RESOLVIDO)

1 resposta
D

E ai pessoal, criei minhas classes de domínio automaticamente pelo HibernateTools, sem mapear as relações n pra n.

O problema que está ocorrendo é o seguinte: tenho uma relação n pra n entre curso e disciplina , quando tento deletar um curso(este no momento da exclusão não possui nenhuma chave estrangeira cadastrada) é retornado o seguinte erro


javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not initialize a collection: [edu.pos.access.Curso.disciplinaCursos#2] at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637) at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:259) at edu.pos.dao.GenericDAO.excluir(GenericDAO.java:53) at edu.pos.service.CursoServiceImpl.excluir(CursoServiceImpl.java:33) at edu.pos.action.CursoAction.excluir(CursoAction.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:186) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) Caused by: org.hibernate.exception.SQLGrammarException: could not initialize a collection: [edu.pos.access.Curso.disciplinaCursos#2] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.loadCollection(Loader.java:2001) at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:36) at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:565) at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:63) at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86) at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:163) at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:213) at org.hibernate.type.CollectionType.getElementsIterator(CollectionType.java:202) at org.hibernate.engine.CascadingAction.getAllElementsIterator(CascadingAction.java:415) at org.hibernate.engine.CascadingAction.access$100(CascadingAction.java:27) at org.hibernate.engine.CascadingAction$1.getCascadableChildrenIterator(CascadingAction.java:125) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:294) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:219) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169) at org.hibernate.engine.Cascade.cascade(Cascade.java:130) at org.hibernate.event.def.DefaultDeleteEventListener.cascadeBeforeDelete(DefaultDeleteEventListener.java:307) at org.hibernate.event.def.DefaultDeleteEventListener.deleteEntity(DefaultDeleteEventListener.java:246) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:141) at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:52) at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:766) at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:744) at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:253) ... 118 more Caused by: org.postgresql.util.PSQLException: ERROR: column disciplina0_.cursopk_fk does not exist at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:351) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:255) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) at org.hibernate.loader.Loader.getResultSet(Loader.java:1787) at org.hibernate.loader.Loader.doQuery(Loader.java:674) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.loadCollection(Loader.java:1994) ... 142 more

....

SEVERE: ERROR: column disciplina0_.cursopk_fk does not exist

E esta coluna existe.

Segue abaixo as classes geradas pelo HibernateTools

Curso
@Entity
@NamedQueries({
	@NamedQuery(name="obterCursoPorNome", query="SELECT c FROM Curso c WHERE c.nome LIKE :nome")
})
@Table(name = "curso", schema = "public")
public class Curso implements java.io.Serializable {
	
	private static final long serialVersionUID = 1L;
	private String codigo;
	private String nome;
	private String descricao;
	private int duracao;
	private Set<Turma> turmas = new HashSet<Turma>(0);
	private Set<DisciplinaCurso> disciplinaCursos = new HashSet<DisciplinaCurso>(
			0);
	private Set<Aluno> alunos = new HashSet<Aluno>(0);
	/** Variável criada por exigência do displaytag - é utilizada para adicionar
	 * funcionalidades em um objeto particular- deve-se criar tb uma classe wraper*/
	private String operacoes; 
	
	public Curso() {
	}

	public Curso(String codigo, String nome, int duracao) {
		this.codigo = codigo;
		this.nome = nome;
		this.duracao = duracao;
	}

	public Curso(String codigo, String nome, String descricao, int duracao,
			Set<Turma> turmas, Set<DisciplinaCurso> disciplinaCursos,
			Set<Aluno> alunos) {
		this.codigo = codigo;
		this.nome = nome;
		this.descricao = descricao;
		this.duracao = duracao;
		this.turmas = turmas;
		this.disciplinaCursos = disciplinaCursos;
		this.alunos = alunos;
	}

	@Id
	@Column(name = "codigo", unique = true, nullable = false, length = 10)
	public String getCodigo() {
		return this.codigo;
	}
	
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	@Column(name = "nome", nullable = false, length = 30)
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Column(name = "descricao")
	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	@Column(name = "duracao", nullable = false)
	public int getDuracao() {
		return this.duracao;
	}

	public void setDuracao(int duracao) {
		this.duracao = duracao;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "curso")
	public Set<Turma> getTurmas() {
		return this.turmas;
	}

	public void setTurmas(Set<Turma> turmas) {
		this.turmas = turmas;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "curso")
	public Set<DisciplinaCurso> getDisciplinaCursos() {
		return this.disciplinaCursos;
	}

	public void setDisciplinaCursos(Set<DisciplinaCurso> disciplinaCursos) {
		this.disciplinaCursos = disciplinaCursos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "curso")
	public Set<Aluno> getAlunos() {
		return this.alunos;
	}

	public void setAlunos(Set<Aluno> alunos) {
		this.alunos = alunos;
	}
	
	@Transient 
	public String getOperacoes() {
		return operacoes;
		}
	
	public void setOperacoes(String operacoes) {
		this.operacoes = operacoes;
	}
}

Disciplina

@Entity
@Table(name = "disciplina", schema = "public")
public class Disciplina implements java.io.Serializable {

	private String codigo;
	private String nome;
	private String ementa;
	private Set<DisciplinaProfessor> disciplinaProfessors = new HashSet<DisciplinaProfessor>(
			0);
	private Set<DisciplinaCurso> disciplinaCursos = new HashSet<DisciplinaCurso>(
			0);
	private Set<DisciplinaTurma> disciplinaTurmas = new HashSet<DisciplinaTurma>(
			0);

	public Disciplina() {
	}

	public Disciplina(String codigo, String nome) {
		this.codigo = codigo;
		this.nome = nome;
	}

	public Disciplina(String codigo, String nome, String ementa,
			Set<DisciplinaProfessor> disciplinaProfessors,
			Set<DisciplinaCurso> disciplinaCursos,
			Set<DisciplinaTurma> disciplinaTurmas) {
		this.codigo = codigo;
		this.nome = nome;
		this.ementa = ementa;
		this.disciplinaProfessors = disciplinaProfessors;
		this.disciplinaCursos = disciplinaCursos;
		this.disciplinaTurmas = disciplinaTurmas;
	}

	@Id
	@Column(name = "codigo", unique = true, nullable = false, length = 5)
	public String getCodigo() {
		return this.codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	@Column(name = "nome", nullable = false, length = 30)
	public String getNome() {
		return this.nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Column(name = "ementa")
	public String getEmenta() {
		return this.ementa;
	}

	public void setEmenta(String ementa) {
		this.ementa = ementa;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "disciplina")
	public Set<DisciplinaProfessor> getDisciplinaProfessors() {
		return this.disciplinaProfessors;
	}

	public void setDisciplinaProfessors(
			Set<DisciplinaProfessor> disciplinaProfessors) {
		this.disciplinaProfessors = disciplinaProfessors;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "disciplina")
	public Set<DisciplinaCurso> getDisciplinaCursos() {
		return this.disciplinaCursos;
	}

	public void setDisciplinaCursos(Set<DisciplinaCurso> disciplinaCursos) {
		this.disciplinaCursos = disciplinaCursos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "disciplina")
	public Set<DisciplinaTurma> getDisciplinaTurmas() {
		return this.disciplinaTurmas;
	}

	public void setDisciplinaTurmas(Set<DisciplinaTurma> disciplinaTurmas) {
		this.disciplinaTurmas = disciplinaTurmas;
	}

}
DisciplinaCurso
@Entity
@Table(name = "disciplina_curso", schema = "public")
public class DisciplinaCurso implements java.io.Serializable {

	private DisciplinaCursoId id;
	private Curso curso;
	private Disciplina disciplina;
	private int cargaHoraria;

	public DisciplinaCurso() {
	}

	public DisciplinaCurso(DisciplinaCursoId id, Curso curso,
			Disciplina disciplina, int cargaHoraria) {
		this.id = id;
		this.curso = curso;
		this.disciplina = disciplina;
		this.cargaHoraria = cargaHoraria;
	}

	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "disciplinaPkFk", column = @Column(name = "disciplinaPK_FK", nullable = false, length = 5)),
			@AttributeOverride(name = "cursoPkFk", column = @Column(name = "cursoPK_FK", nullable = false, length = 10)) })
	public DisciplinaCursoId getId() {
		return this.id;
	}

	public void setId(DisciplinaCursoId id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "cursoPK_FK", nullable = false, insertable = false, updatable = false)
	public Curso getCurso() {
		return this.curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "disciplinaPK_FK", nullable = false, insertable = false, updatable = false)
	public Disciplina getDisciplina() {
		return this.disciplina;
	}

	public void setDisciplina(Disciplina disciplina) {
		this.disciplina = disciplina;
	}

	@Column(name = "carga_horaria", nullable = false)
	public int getCargaHoraria() {
		return this.cargaHoraria;
	}

	public void setCargaHoraria(int cargaHoraria) {
		this.cargaHoraria = cargaHoraria;
	}

}
DisciplinaCursoId
@Embeddable
public class DisciplinaCursoId implements java.io.Serializable {

	private String disciplinaPkFk;
	private String cursoPkFk;

	public DisciplinaCursoId() {
	}

	public DisciplinaCursoId(String disciplinaPkFk, String cursoPkFk) {
		this.disciplinaPkFk = disciplinaPkFk;
		this.cursoPkFk = cursoPkFk;
	}

	@Column(name = "disciplinaPK_FK", nullable = false, length = 5)
	public String getDisciplinaPkFk() {
		return this.disciplinaPkFk;
	}

	public void setDisciplinaPkFk(String disciplinaPkFk) {
		this.disciplinaPkFk = disciplinaPkFk;
	}

	@Column(name = "cursoPK_FK", nullable = false, length = 10)
	public String getCursoPkFk() {
		return this.cursoPkFk;
	}

	public void setCursoPkFk(String cursoPkFk) {
		this.cursoPkFk = cursoPkFk;
	}

	public boolean equals(Object other) {
		if ((this == other))
			return true;
		if ((other == null))
			return false;
		if (!(other instanceof DisciplinaCursoId))
			return false;
		DisciplinaCursoId castOther = (DisciplinaCursoId) other;

		return ((this.getDisciplinaPkFk() == castOther.getDisciplinaPkFk()) || (this
				.getDisciplinaPkFk() != null
				&& castOther.getDisciplinaPkFk() != null && this
				.getDisciplinaPkFk().equals(castOther.getDisciplinaPkFk())))
				&& ((this.getCursoPkFk() == castOther.getCursoPkFk()) || (this
						.getCursoPkFk() != null
						&& castOther.getCursoPkFk() != null && this
						.getCursoPkFk().equals(castOther.getCursoPkFk())));
	}

	public int hashCode() {
		int result = 17;

		result = 37
				* result
				+ (getDisciplinaPkFk() == null ? 0 : this.getDisciplinaPkFk()
						.hashCode());
		result = 37 * result
				+ (getCursoPkFk() == null ? 0 : this.getCursoPkFk().hashCode());
		return result;
	}

}

Será que alguém poderia me ajudar por favor?
Obrigado!

1 Resposta

D

Resolvi … na tabela os atributos estavam como cursoPk_Fk , etc … e mesmo mapeado no cóidigo como "@Column(name = “cursoPK_FK” … "
por algum motivo, na consulta o hibernate lê como cursopk_fk … então alterei os nomes na tabela, deixando todas as letrar em minúsculo e resolvi.

Criado 28 de agosto de 2008
Ultima resposta 29 de ago. de 2008
Respostas 1
Participantes 1