Erro em um mapeamento simples ("Broken column mapping for: ...")

1 resposta
L
@Entity
@Table(name = "PRECO_CONTRATO")
public class PrecoContrato implements java.io.Serializable {

	private PrecoContratoId id;
	private TipoServico TipoServico;
	private BigDecimal vlUnidadeServico;
	
	public PrecoContrato() {
	}

	public PrecoContrato(PrecoContratoId id, BigDecimal vlUnidadeServico,
			TipoServico TipoServico) {
		this.id = id;
		this.vlUnidadeServico = vlUnidadeServico;
		this.TipoServico = TipoServico;
	}

	@EmbeddedId
	@AttributeOverrides({
			@AttributeOverride(name = "sqAquisicao", column = @Column(name = "SQ_AQUISICAO", nullable = false, precision = 10, scale = 0)),
			@AttributeOverride(name = "cdTipoServico", column = @Column(name = "CD_TIPO_SERVICO", nullable = false, precision = 3, scale = 0)) })
	@NotNull
	public PrecoContratoId getId() {
		return this.id;
	}

	public void setId(PrecoContratoId id) {
		this.id = id;
	}
	
	@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "CD_TIPO_SERVICO", insertable = false, nullable = false, updatable = false)
	@NotNull
	public TipoServico getTipoServico() {
		return this.tipoServico;
	}
	
	public void setTipoServico(TipoServico tipoServico) {
		this.tipoServico = tipoServico;
	}

	@Column(name = "VL_UNIDADE_SERVICO", nullable = false, precision = 8)
	@NotNull
	public BigDecimal getVlUnidadeServico() {
		return this.vlUnidadeServico;
	}

	public void setVlUnidadeServico(BigDecimal vlUnidadeServico) {
		this.vlUnidadeServico = vlUnidadeServico;
	}
	
}
@Entity
@Table(name = "TIPO_SERVICO")
public class TipoServico implements java.io.Serializable {

	private short cdTipoServico;
	private String tpPeriodicidade;
	private String dsTipoServico;

	public TipoServico() {
	}

	public TipoServico(short cdTipoServico, String tpPeriodicidade,
			String dsTipoServico) {
		this.cdTipoServico = cdTipoServico;
		this.tpPeriodicidade = tpPeriodicidade;
		this.dsTipoServico = dsTipoServico;
	}

	@Id
	@Column(name = "CD_TIPO_SERVICO", unique = true, nullable = false, precision = 3, scale = 0)
	public short getCdTipoServico() {
		return this.cdTipoServico;
	}

	public void setCdTipoServico(short cdTipoServico) {
		this.cdTipoServico = cdTipoServico;
	}

	@Column(name = "TP_PERIODICIDADE", nullable = false, length = 1)
	@NotNull
	@Length(max = 1)
	public String getTpPeriodicidade() {
		return this.tpPeriodicidade;
	}

	public void setTpPeriodicidade(String tpPeriodicidade) {
		this.tpPeriodicidade = tpPeriodicidade;
	}

	@Column(name = "DS_TIPO_SERVICO", nullable = false, length = 50)
	@NotNull
	@Length(max = 50)
	public String getDsTipoServico() {
		return this.dsTipoServico;
	}

	public void setDsTipoServico(String dsTipoServico) {
		this.dsTipoServico = dsTipoServico;
	}

}
DEPLOYMENTS IN ERROR:
  Deployment "persistence.unit:unitName=xxxxx.ear/xxxxx.jar#xx is in error due to the following reason(s): org.hibernate.MappingException: broken column mapping for: TipoServico.id of: org.domain.entity.PrecoContrato

	at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:993)
	at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:939)
	at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:873)
	at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.checkComplete(MainDeployerAdapter.java:128)
	at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:369)
	at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

Meu problema é fazer o mapeamento do CD_TIPO_SERVICO. Acredito eu que seja algo simples, porque no mesmo projeto tenho um mapeamento muito parecido. Uma entidade com uma composite pk e uma outra com uma pk única.
Procurei e não achei uma solução.

Desde já agradeço a ajuda.

Usando Seam Framework 2.2.0.GA, Eclipse Helios, JBoss 5.1.0GA.

1 Resposta

L

Será que alguém pode me ajudar?

Já tentei muitas coisas como mappedBy, targetEntity. Acho que todas as variações eu já tentei e não consigo resolver esse mapeamento.
Em algumas tenho erros novos.

Preciso resolver esse mapeamento pra seguir no sistema.

Grato.

Criado 14 de fevereiro de 2011
Ultima resposta 22 de fev. de 2011
Respostas 1
Participantes 1