Problemas com cascade

3 respostas
C

Olá pessoal, meu problema é o seguinte?

tenho a seguinte situação Usuarios 1 <--------> 1 Clientes 1 <-------> * TelefonesClientes

Na mesma página altero o usuário, o clientes e adiciono, removo ou altero os telefones em um datatable editável do primefaces.

Para salvar tudo isso, estou dando um merge em usuarios, raciocinando que pela cascata seria salvo o usuário, o cliente e as alterações nos telefones
Para minha surpresa as alterações em telefones não foram salvas, e não consigo entender porque. Alguém poderia me ajudar???

Minha entidade Usuarios

@Entity
public class Usuarios implements Serializable {

//...

@OneToOne(cascade = CascadeType.ALL, mappedBy = "usuarios", fetch = FetchType.LAZY)
    private Clientes clientes = new Clientes();

//getters e setters

}

Minha entidade Clientes

@Entity
//...
public class Clientes implements Serializable {

//...

//É neste que está o problema
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "clientes", fetch = FetchType.LAZY)
    private List<TelefonesCliente> telefonesClienteList;
    @JoinColumn(name = "CLIENTES_ID_USUARIOS", referencedColumnName = "ID_USUARIOS")
    @OneToOne(optional = false, fetch = FetchType.LAZY)
    private Usuarios usuarios;
//Neste campo tudo certo 
    @JoinColumn(name = "CLIENTES_ID_CIDADES", referencedColumnName = "ID_CIDADES", nullable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Cidades cidades = new Cidades();

//getters e setters
}

3 Respostas

Aleksandro
clarinetabest:
Olá pessoal, meu problema é o seguinte?

tenho a seguinte situação Usuarios 1 <--------> 1 Clientes 1 <-------> * TelefonesClientes

Na mesma página altero o usuário, o clientes e adiciono, removo ou altero os telefones em um datatable editável do primefaces.

Para salvar tudo isso, estou dando um merge em usuarios, raciocinando que pela cascata seria salvo o usuário, o cliente e as alterações nos telefones
Para minha surpresa as alterações em telefones não foram salvas, e não consigo entender porque. Alguém poderia me ajudar???????

Minha entidade Usuarios

@Entity
public class Usuarios implements Serializable {

//...

@OneToOne(cascade = CascadeType.ALL, mappedBy = "usuarios", fetch = FetchType.LAZY)
    private Clientes clientes = new Clientes();

//getters e setters

}
Minha entidade Clientes
@Entity
//...
public class Clientes implements Serializable {

//...

//É neste que está o problema
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "clientes", fetch = FetchType.LAZY)
    private List<TelefonesCliente> telefonesClienteList;
    @JoinColumn(name = "CLIENTES_ID_USUARIOS", referencedColumnName = "ID_USUARIOS")
    @OneToOne(optional = false, fetch = FetchType.LAZY)
    private Usuarios usuarios;
//Neste campo tudo certo 
    @JoinColumn(name = "CLIENTES_ID_CIDADES", referencedColumnName = "ID_CIDADES", nullable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Cidades cidades = new Cidades();

//getters e setters
}

@OneToOne(optional = false, fetch = FetchType.LAZY) Este mapeamento tá certo ? é um para um mesmo ?

C

sim

Hebert_Coelho

E como você está chamando o merge/persist?

Criado 8 de novembro de 2012
Ultima resposta 9 de nov. de 2012
Respostas 3
Participantes 3