[RESOLVIDO] Problemas ao gravar entidade mapeada com OneToMany

Bom dia, tenho um projeto (Spring + Hibernate) simples com Cabeçalho de Compra e Itens de Compra que preciso inserir, porém ao tentar gravar somente o cabeçalho é gravado e é exibido o seguinte erro:

Coloco abaixo as classes que estão envonvidas neste processo:

Service que é consumida pela aplicação cliente:

@Service("CompraService")
@RemotingDestination(channels="my-amf")
public class CompraService implements IBaseService<CompraVO> {
    @Autowired
    private CompraDAO dao;

    @Override @RemotingInclude 
    public CompraVO inserir(CompraVO vo) {
        return this.dao.insert(vo);
    }
}

Classe de entidade da compra e dos itens de compra:

@Entity
@Table(name="compra")
public class CompraVO implements Serializable {
    @Id @GeneratedValue
    private Integer id;
    @Column(length=6, nullable=false)
    private String codigo;
    @Temporal(TemporalType.DATE)
    @Column(nullable=true)
    private Date dtcompra;
    
    @ManyToOne(fetch= FetchType.LAZY)
    @JoinColumn(name="fornecedor_id", referencedColumnName="id", nullable=false)
    private FornecedorVO fornecedor;
    
    @OneToMany(fetch= FetchType.EAGER, cascade={CascadeType.ALL})
    private List<ItemCompraVO> itens;
	
    //SETTER's & GETTER's
}
@Entity
@Table(name="itemcompra")
public class ItemCompraVO implements Serializable {
    @Id @GeneratedValue
    private Integer id;
    @Column(nullable=false)
    private Integer qtdade;
    @Column(nullable=false)
    private Double valunit;
    
    @ManyToOne(fetch= FetchType.LAZY)
    @JoinColumn(name="produto_id", referencedColumnName="id", nullable=false)
    private ProdutoVO produto;
	
    //SETTER's & GETTER's
}

A classe de acesso à dados CompraDAO estende uma classe abstrata e por isto irei colocar apenas o código desta última:

public class AbstractDAO<T> implements IAbstractDAO<T> {
    protected Class<T> classVO = null;
    protected HibernateTemplate template;

    public AbstractDAO() {
        this.classVO = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
                                  .getActualTypeArguments()[0];
    }

    @Override @Transactional
    public T insert(T entity) {
        this.template.save(entity);
        return entity;
    }
}

Aonde é que estou errando ?

Grato pela colaboração

Tentou traduzir a mensagem retornada?
Ela diz algo mais ou menos como “Atualização de arquivo em lote retornou uma contagem inesperada de linhas da atualização [0]. Contagem atual de linhas: 0; Esperadas: 1”.

Consegue entender agora? Significa que ao tentar atualizar, os parâmetros passados impediram que qualquer linha fosse atualizada.

Boa tarde, obrigado pela atenção…

Então, mas estou fazendo um insert no banco deveria dar problema com a atualização? Outra coisa, depurando o código fonte, o objeto vo passado por parâmetro para a service está ok, ou seja, com exceção do atributo ID todos os outros estão preenchidos corretamente.

Alguma coutra sugestão ou erro que eu tenha feito?

[quote=libajunior]Boa tarde, obrigado pela atenção…

Então, mas estou fazendo um insert no banco deveria dar problema com a atualização? Outra coisa, depurando o código fonte, o objeto vo passado por parâmetro para a service está ok, ou seja, com exceção do atributo ID todos os outros estão preenchidos corretamente.

Alguma coutra sugestão ou erro que eu tenha feito?

[/quote]
Não existe uma associação entre entidades? Qual id não é o mesmo?

Não entendi sua colocação… A associação existe pelo @OneToMany, não é ?

O problema foi resolvido chamando this.template.merge(entity) no lugar de this.template.save(entity).