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.