Ola a todos,
Tenho um sistema que recupera de uma base de dados todos os shelves e cadastra em outra, entao eu faco o select e na hora de inserir na minha base de dados eu vejo se ja esta cadastrada, se nao esta cadastro, se nao so atualizo os dados sem atualizar a data de inserção, porem quando vou gravar o hibernate me retorna um erro dizendo que ja existe um registro na base. fiz um teste com a minha base vazia dae nao da o erro, alguem sabe o que pode ser?
veja minhas classes@Entity
@Table(name = "SHELF")
public class Shelf implements Serializable {
@Id()
@Column(name = "IP")
private String ip;
@Column(name = "NAME")
private String name;
@ManyToOne()
private City city;
@ManyToOne
private ShelfModel shelfModel;
@Temporal(TemporalType.DATE)
@Column(name = "DATE_INSERT", nullable = false)
private Calendar dateInsert;
public Shelf() {
}
public Shelf(String ip) {
this.ip = ip;
}
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ShelfModel getShelfModel() {
return shelfModel;
}
public void setShelfModel(ShelfModel shelfModel) {
this.shelfModel = shelfModel;
}
public Calendar getDateInsert() {
return dateInsert;
}
public void setDateInsert(Calendar dateInsert) {
this.dateInsert = dateInsert;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Shelf other = (Shelf) obj;
if ((this.ip == null) ? (other.ip != null) : !this.ip.equals(other.ip)) {
return false;
}
return true;
}
}
for (int x = 0; x < shelves.size(); x++) {
try {
HibernateCore.beginTransaction();
if (daoShelf.isShelfExist(shelves.get(x).getIp())) {
shelves.get(x).setDateInsert(null);
daoShelf.getDaoGeneric().update(shelves.get(x));
} else {
shelves.get(x).setDateInsert(Calendar.getInstance());
daoShelf.getDaoGeneric().save(shelves.get(x));
}
HibernateCore.commitTransaction();
} catch (DaoException ex) {
Logger.getLogger(Inventory.class.getName()).log(Level.SEVERE, null, ex);
}
}
br.com.gvt.seaccess.dao.exception.DaoException: a different object with the same identifier value was already associated with the session: [br.com.gvt.seaccess.model.Shelf#10.131.3.3]
at br.com.gvt.seaccess.dao.Dao.update(Dao.java:77)
at br.com.gvt.seaccess.shelfinventory.inventory.Inventory.makeInventory(Inventory.java:77)
at shelfinventory.Main.main(Main.java:21)
Mar 30, 2010 11:22:18 AM br.com.gvt.seaccess.shelfinventory.inventory.Inventory makeInventory