1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Relacionamento One To One - restrição de integridade violada - chave mãe não localizada

Pessoal estou tentando persistir um objeto que possui relacionamento Um para Um Tenho as seguintes classes

Laudo que possui UM serviço & Serviço eu possui UM Prestador

todos compartilham a chave primaria do Laudo

até a entidade Serviço consigo persistir mas quando adicionei a entidade Prestador começou a me dar o erro de restrição de integridade dizendo que a chave mãe não foi localizada.

@Entity(name="RATMWEBLAU")
public class LaudoWebEntity implements Serializable {

    @Id
    @Column(name = "LAUNUM")
    @SequenceGenerator(name="RATMWEBLAU_SEQ", sequenceName="RATMWEBLAU_SEQ", allocationSize=1)
    @GeneratedValue(strategy=GenerationType.TABLE, generator="RATMWEBLAU_SEQ")
    private long numeroLaudo;

      @OneToOne(mappedBy = "laudoWebEntity")
      private ServicoLaudoWebEntity servicoLaudoWebEntity;

}

//--------------------------------------------------------------------------------------//

@Entity(name = "RATMWEBLAUSRV")
public class ServicoLaudoWebEntity implements Serializable {
    @Id
    @Column(name = "LAUNUM", insertable = false, updatable = false)
    private long numeroLaudo;

    @OneToOne    
    @JoinColumn(name="LAUNUM")
    private LaudoWebEntity laudoWebEntity;

    @OneToOne(mappedBy = "servicoLaudoWebEntity")
    private PrestadorServicoEntity prestadorServicoEntity;

}

//--------------------------------------------------------------------------------------//

//**e por fim prestador obs* se eu tiro do mapeamento o prestador funciona **.

@Entity(name = "RATMSRVPRS")
public class PrestadorServicoEntity implements Serializable {
    @Id
    @Column(name = "LAUNUM", insertable = false, updatable = false)
    private long numerolaudo;

    @OneToOne
    @JoinColumn(name="LAUNUM")
    private ServicoLaudoWebEntity servicoLaudoWebEntity;
}

Teria algo de errado no mapeamento, algume pode me dar uma ajuda ? Obrigado

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

3 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags jpa hibernate ou faça a sua própria pergunta.