Olaa pessoal
Estou fazendo um projeto e preciso tela de edicao dos dados, estou usando o hibernate para fazer isso e o seguinte metodo:
public void edit(Login login) throws IllegalOrphanException, NonexistentEntityException, Exception {
EntityManager em = null;
try {
em = getEntityManager();
em.getTransaction().begin();
Login persistentLogin = em.find(Login.class, login.getId());
Collection<ControleSistemasAUD> controleSistemasAUDCollectionOld = persistentLogin.getControleSistemasAUDCollection();
Collection<ControleSistemasAUD> controleSistemasAUDCollectionNew = login.getControleSistemasAUDCollection();
Collection<ControleSistemas> controleSistemasCollectionOld = persistentLogin.getControleSistemasCollection();
Collection<ControleSistemas> controleSistemasCollectionNew = login.getControleSistemasCollection();
List<String> illegalOrphanMessages = null;
for (ControleSistemasAUD controleSistemasAUDCollectionOldControleSistemasAUD : controleSistemasAUDCollectionOld) {
if (!controleSistemasAUDCollectionNew.contains(controleSistemasAUDCollectionOldControleSistemasAUD)) {
if (illegalOrphanMessages == null) {
illegalOrphanMessages = new ArrayList<String>();
}
illegalOrphanMessages.add("You must retain ControleSistemasAUD " + controleSistemasAUDCollectionOldControleSistemasAUD + " since its tecnico field is not nullable.");
}
}
for (ControleSistemas controleSistemasCollectionOldControleSistemas : controleSistemasCollectionOld) {
if (!controleSistemasCollectionNew.contains(controleSistemasCollectionOldControleSistemas)) {
if (illegalOrphanMessages == null) {
illegalOrphanMessages = new ArrayList<String>();
}
illegalOrphanMessages.add("You must retain ControleSistemas " + controleSistemasCollectionOldControleSistemas + " since its tecnico field is not nullable.");
}
}
if (illegalOrphanMessages != null) {
throw new IllegalOrphanException(illegalOrphanMessages);
}
Collection<ControleSistemasAUD> attachedControleSistemasAUDCollectionNew = new ArrayList<ControleSistemasAUD>();
for (ControleSistemasAUD controleSistemasAUDCollectionNewControleSistemasAUDToAttach : controleSistemasAUDCollectionNew) {
controleSistemasAUDCollectionNewControleSistemasAUDToAttach = em.getReference(controleSistemasAUDCollectionNewControleSistemasAUDToAttach.getClass(), controleSistemasAUDCollectionNewControleSistemasAUDToAttach.getId());
attachedControleSistemasAUDCollectionNew.add(controleSistemasAUDCollectionNewControleSistemasAUDToAttach);
}
controleSistemasAUDCollectionNew = attachedControleSistemasAUDCollectionNew;
login.setControleSistemasAUDCollection(controleSistemasAUDCollectionNew);
Collection<ControleSistemas> attachedControleSistemasCollectionNew = new ArrayList<ControleSistemas>();
for (ControleSistemas controleSistemasCollectionNewControleSistemasToAttach : controleSistemasCollectionNew) {
controleSistemasCollectionNewControleSistemasToAttach = em.getReference(controleSistemasCollectionNewControleSistemasToAttach.getClass(), controleSistemasCollectionNewControleSistemasToAttach.getId());
attachedControleSistemasCollectionNew.add(controleSistemasCollectionNewControleSistemasToAttach);
}
controleSistemasCollectionNew = attachedControleSistemasCollectionNew;
login.setControleSistemasCollection(controleSistemasCollectionNew);
login = em.merge(login);
for (ControleSistemasAUD controleSistemasAUDCollectionNewControleSistemasAUD : controleSistemasAUDCollectionNew) {
if (!controleSistemasAUDCollectionOld.contains(controleSistemasAUDCollectionNewControleSistemasAUD)) {
Login oldTecnicoOfControleSistemasAUDCollectionNewControleSistemasAUD = controleSistemasAUDCollectionNewControleSistemasAUD.getTecnico();
controleSistemasAUDCollectionNewControleSistemasAUD.setTecnico(login);
controleSistemasAUDCollectionNewControleSistemasAUD = em.merge(controleSistemasAUDCollectionNewControleSistemasAUD);
if (oldTecnicoOfControleSistemasAUDCollectionNewControleSistemasAUD != null && !oldTecnicoOfControleSistemasAUDCollectionNewControleSistemasAUD.equals(login)) {
oldTecnicoOfControleSistemasAUDCollectionNewControleSistemasAUD.getControleSistemasAUDCollection().remove(controleSistemasAUDCollectionNewControleSistemasAUD);
oldTecnicoOfControleSistemasAUDCollectionNewControleSistemasAUD = em.merge(oldTecnicoOfControleSistemasAUDCollectionNewControleSistemasAUD);
}
}
}
for (ControleSistemas controleSistemasCollectionNewControleSistemas : controleSistemasCollectionNew) {
if (!controleSistemasCollectionOld.contains(controleSistemasCollectionNewControleSistemas)) {
Login oldTecnicoOfControleSistemasCollectionNewControleSistemas = controleSistemasCollectionNewControleSistemas.getTecnico();
controleSistemasCollectionNewControleSistemas.setTecnico(login);
controleSistemasCollectionNewControleSistemas = em.merge(controleSistemasCollectionNewControleSistemas);
if (oldTecnicoOfControleSistemasCollectionNewControleSistemas != null && !oldTecnicoOfControleSistemasCollectionNewControleSistemas.equals(login)) {
oldTecnicoOfControleSistemasCollectionNewControleSistemas.getControleSistemasCollection().remove(controleSistemasCollectionNewControleSistemas);
oldTecnicoOfControleSistemasCollectionNewControleSistemas = em.merge(oldTecnicoOfControleSistemasCollectionNewControleSistemas);
}
}
}
em.getTransaction().commit();
} catch (Exception ex) {
String msg = ex.getLocalizedMessage();
if (msg == null || msg.length() == 0) {
Integer id = login.getId();
if (findLogin(id) == null) {
throw new NonexistentEntityException("The login with id " + id + " no longer exists.");
}
}
throw ex;
} finally {
if (em != null) {
em.close();
}
}
}
Onde ControleSistemas eh uma tabela onde tem uma foreignKey de login, ou seja o id do login estao relacionado com o campo idtecnico na tabela ControleSistemas
Esse eh o codigo de edicao
E Esse eh o codigo que chama a edicao
Login nLogin = controle.findLogin(Integer.parseInt(labelID.getText()));
nLogin.setLogin(textologin.getText());
nLogin.setNome(textonome.getText());
if (senha1.getText().equalsIgnoreCase(senha2.getText())){
nLogin.setSenha(senha1.getText());
}
nLogin.setTipo(textotipo.getText());
if (nLogin.getId() != null ){
try {
controle.edit(nLogin);
} catch (IllegalOrphanException ex) {
Logger.getLogger(formEditLogin.class.getName()).log(Level.SEVERE, null, ex);
} catch (NonexistentEntityException ex) {
Logger.getLogger(formEditLogin.class.getName()).log(Level.SEVERE, null, ex);
} catch (Exception ex) {
Logger.getLogger(formEditLogin.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
JOptionPane.showMessageDialog(this,"nenhum login selecionado!");
}
Se alguem poder ajudar agradeco :D
