1
resposta

Erro ao inserir dado com cascadeType.ALL

Tenho duas classes: Pessoa e UsuarioAcesso.

@Entity
public class UsuarioAcesso {
...

    @OneToOne(cascade=CascadeType.ALL)
    @Valid
    @NotNull
    private Pessoa pessoa;

    ...
}

e

@Entity
public class Pessoa {
...

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @NotEmpty(message="O nome é obrigatório")
    private String nome;

    @NotEmpty(message="O CPF é obrigatório")
    @CPF(message="CPF inválido")
    @Column(unique=true)
    private String cpf;

    private Byte foto;
...

}

Estou tentando inserir um UsuarioAcesso. Todos os dados da pessoa e usuário acesso estão setados, porém na inserção tenho o seguinte erro:

javax.validation.ConstraintViolationException: Validation failed for classes [br.edu.ifpi.catce.catracas.model.UsuarioAcesso] during update time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage='não pode ser nulo', propertyPath=pessoa, rootBeanClass=class br.edu.ifpi.catce.catracas.model.UsuarioAcesso, messageTemplate='{javax.validation.constraints.NotNull.message}'} ]

O detalhe é que mesmo com o erro ainda sim o usuárioAcesso é persistido, bem como a pessoa. O erro aparece, porém tudo é persistido.

Outro detalhe é que se eu tirar o @NotNull do atributo 'pessoa' de UsuarioAcesso, o erro continua e a pessoa não é inserida, apenas o usuário acesso. Sendo que neste caso a minha chave primária pessoa_id na minha tabela usuario_acesso fica nula.

Creio que o problema esteja em @OneToOne(cascade=CascadeType.ALL), porém ainda não encontrei uma solução. Ajuda aí. hehehe =D

1 resposta

Ele está dizendo que o atributo pessoa, da classe UsuarioPessoa está nulo.. não parece ter ligação com o cascade.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software