Hibernate: Atualização de campo por cascade

2 respostas
robertouba

Boa noite Galera
Eu entendo pouco de persistência, Estou utilizando Hibernate, e tenho as seguintes classes:

-Compra
-CompraItem
-CompraItemPK
-MateriaPrimaFornecedor

Quando eu adiciono um item a compra, eu coloco um valor x, e quero atualizar na MateriaPrimaFornecedor o valor desta.
Portanto quero atualizar apenas um campo valor, que é o mesmo do CompraItem.

Tentei mas não consegui… Como proceder?

Minhas classes são:

@Entity
public class Compra{

    @Id
    @GeneratedValue
    private Long id;

    @Valid
    @OneToMany(mappedBy = "item.compra", cascade = CascadeType.ALL)
    private List<CompraItem> itens = new ArrayList<CompraItem>();
@Entity
@Table(name = "Compra_Item")
public class CompraItem{

    @Id
    @GeneratedValue
    private Long id;

    @Embedded
    private CompraItemPK item;
@Embeddable
public class CompraItemPK implements Serializable{

    @ManyToOne(optional = false,cascade=CascadeType.MERGE)
    @Cascade(value=org.hibernate.annotations.CascadeType.MERGE)
    private MateriaPrimaFornecedor mpfornecedor;
@Entity
@Table(name = "Fornecedor_MateriaPrima")
public class MateriaPrimaFornecedor implements Serializable{

    @EmbeddedId
    private MateriaPrimaFornecedorPK id;

    @Min(value = 0, message = "Preencha corretamente o valor")
    private Double valor = -1.0;

2 Respostas

Hebert_Coelho

Pq que dentro da sua PK CompraItemPK é que está o campo a ser atualizado?

Não deveria estar fora? PK não é algo para ficar sendo atualizado…

robertouba

Olá,
Pois é, eu não estou atualizando a pk, e sim um campo que está em uma das classes que compõem a pk.
Um exemplo que fiz para atualizar é o seguinte:

Ou seja, eu quero que o valor unitário do item que é MateriaPrimaFornecedor , tenha o valor do CompraItem.
Porém ele não reconheceu essa atualização.

Criado 23 de abril de 2012
Ultima resposta 24 de abr. de 2012
Respostas 2
Participantes 2