Update com Mapeamento Many-To-One (Spring+Hibernate)

Saudações,

Estou fazendo uns testes com Spring 2.0 + Hibernate 3.2 e esta ocorrendo o seguinte erro:


org.springframework.orm.hibernate3.HibernateSystemException: identifier of an instance of model.Sistema was altered from 4 to 1; nested exception is org.hibernate.HibernateException: identifier of an instance of
model.Sistema was altered from 4 to 1
Caused by: org.hibernate.HibernateException: identifier of an instance of model.Sistema was altered from 4 to 1 ...

Este erro ocorre quando eu faço isso:


...
  Modulo m = moduloDAO.load(1);
  m.getSistema().setCodigo(codigoSistema);
  moduloDAO.update(m);
...

eu estou querendo alterar o sistema de um modulo de 2 para 3 por exemplo.

Porém se eu implementar da seguinte forma, eu consigo fazer o update:

...
  Modulo m = moduloDAO.load(1);
  Sistema s = new Sistema();
  s.setCodigo(codigoSistema);
  m.setSistema(s);
  moduloDAO.update(m);
...

Meu mapeamento está assim:


@Entity
public class Sistema {
   @Id
   @Column(name = "CDSISTEMA")
   private Integer codigo;

   @Column(name = "DSSISTEMA")
   private String nome;

...//set e gets
}

@Entity
public class Modulo {
    @Id
    @SequenceGenerator(name = "MODULO_ID", sequenceName = "GEN_MODULO", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MODULO_ID")
    @Column(name="CDMODULO", nullable = false)
    private Integer codigo;
   
    @Column(name="DSMODULO")
    private String nome;
   
    @ManyToOne(fetch=FetchType.LAZY, cascade={} )
    @JoinColumn(name = "CDSISTEMA")      
    private Sistema sistema;
}

Eu gostaria de saber pq ocorre o erro quando eu seto simplesmente o novo codigoDoSistema para o Modulo, parece que o
hibernate está tentando fazer um update em Sistema e não em Modulo.