style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

ayuda con insercion de datos desde un formulario hecho en netbeans 6.7.1 a tablas con relacion de 1a 1 y 1 a muchos en MySQL

Hola a todos

Espero que me puedan ayudar con el problema que tengo, les explicaré que es lo que estoy haciendo para que se puedan dar una mejor idea. Estoy realizando unos formularios que contienen informacion sobre usuarios y su información personal, pero sucede que en la base de datos existen varias tablas que contienen información sobre el usuario, la cuestión es hay una tabla principal que se llama usuario y las demás tablas dependen de ella, todas las tablas tienen una relacion 1 a 1 con la principal (usuario), ahora bien, haciendo la interface puedo visualizar los datos previamente ingresados en las tablas relacionadas de un usuario especifico para saber que se pueden ver y efectivamente se pueden ver, los datos los selecciono de una tabla (jtable) que muestra el codigo que identifica a cada persona posteriormente hago las acciones para los botones guardar y nuevo para hacer las pruebas necesarias, y he aquí el inconveniente que tengo, cuando hago click en el boton nuevo y relleno los campos, y luego hago click en el boton guardar, efectivamente hace la accion de guardar pero solamente guarda los datos de la tabla principal y no de las demás. Que opinan sobre esto?que debo corregir o añadir o quitar?

Esta ventana forma parte de un sistema un poco más grande que estoy diseñando y hace unas semanas rediseñé las ventanas de otros formularios que voy a conectar a la base de datos (MySQL) ya que algunas de dichos formularios debo hacerlos de la misma forma que este pero con diferentes tablas, otros formularios que solo deben mostrar informacion de tablas con relacion de 1 a muchos y tabien otras que tienen de las dos partes. ya he creado las clases entidad con el asistente de netbeans y les he hecho algunos cambios a dichas clases para no haya problema al momento de hacer el mapeo.

Les agradecería mucho la ayuda que me puedan brindar. :)

P.D. Aquí les dejo el codigo de la ventana para que lo puedan checar

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * gestionUsuario.java
 *
 * Created on 6/07/2010, 10:44:27 PM
 */

package user;

import db.Userbarcode;
import db.Usercont;
import db.Usr;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.RollbackException;
import javax.swing.JInternalFrame;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import loinvsys.LoInvSysApp;
import org.jdesktop.application.Action;
import org.jdesktop.application.Application;
import org.jdesktop.application.Task;
import org.jdesktop.beansbinding.AbstractBindingListener;
import org.jdesktop.beansbinding.Binding;
import org.jdesktop.beansbinding.PropertyStateEvent;

/**
 *
 * @author Clody&Johann
 */

public class gestionUsuario extends JInternalFrame {

    /** Creates new form gestionUsuario */
    public gestionUsuario() {
        initComponents();
        initListeners();
        entityManager1.getTransaction().begin();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

    private boolean necesitaGuardar = false;
    public boolean isNecesitaGuardar() {
        return necesitaGuardar;
    }

    public void setNecesitaGuardar(boolean b) {
        boolean old = isNecesitaGuardar();
        this.necesitaGuardar = b;
        firePropertyChange("necesitaGuardar", old, isNecesitaGuardar());
    }

    public boolean isEstudianteSeleccionado() {
        return userTable.getSelectedRow() != -1;
    }

    @Action
    public void usuarioNuevo() {
        Usr estudiante = new Usr();
        entityManager1.persist(estudiante);
        list1.add(estudiante);
        int fila = list1.size() - 1;
        userTable.setRowSelectionInterval(fila, fila);
        userTable.scrollRectToVisible(userTable.getCellRect(fila, 0, true));
        setNecesitaGuardar(true);
    }

    @Action(enabledProperty = "necesitaGuardar")
    public Task guardarUsuario() {
        return new GuardarUsuarioTask(LoInvSysApp.getApplication());
    }

    @Action
    public Task actualizarUsuario() {
        return new ActualizarUsuarioTask(LoInvSysApp.getApplication());
    }

    private void initListeners() {
        userTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            public void valueChanged(ListSelectionEvent e) {
                firePropertyChange("estudianteSeleccionado", !isEstudianteSeleccionado(),
                        isEstudianteSeleccionado());
            }
        });
        bindingGroup.addBindingListener(new AbstractBindingListener() {
            @Override public void targetChanged(Binding binding, PropertyStateEvent event) {
                setNecesitaGuardar(true);
            }
        });
    }

private class GuardarUsuarioTask extends Task<Object, Void> {
        GuardarUsuarioTask(Application app) {
            // Runs on the EDT.  Copy GUI state that
            // doInBackground() depends on from parameters
            // to GuardarUsuarioTask fields, here.
            super(app);
        }
        @Override protected Object doInBackground() {
            try {
                entityManager1.getTransaction().commit();
                entityManager1.getTransaction().begin();
            } catch (RollbackException ex) {
                Logger.getLogger(gestionUsuario.class.getName()).log(Level.SEVERE, null, ex);
                entityManager1.getTransaction().begin();
                List<Usr> estudiantes = new ArrayList<Usr>(list1.size());
                for (Usr estudiante : list1) estudiantes.add(entityManager1.merge(estudiante));
                list1.clear();
                list1.addAll(estudiantes);
            }
            return null;  // return your result
        }
        @Override protected void succeeded(Object result) {
            setNecesitaGuardar(false);
        }
    }

    private class ActualizarUsuarioTask extends Task<Object, Void> {
        ActualizarUsuarioTask(Application app) {
            // Runs on the EDT.  Copy GUI state that
            // doInBackground() depends on from parameters
            // to ActualizarUsuarioTask fields, here.
            super(app);
        }
        @Override protected Object doInBackground() {
            {
                entityManager1.getTransaction().rollback();
                entityManager1.getTransaction().begin();
                List<Usr> estudiantes = query1.getResultList();
                for (Usr estudiante : estudiantes) entityManager1.refresh(estudiante);
                list1.clear();
                list1.addAll(estudiantes);
            }
            return null;
        }
        @Override protected void succeeded(Object result) {
            setNecesitaGuardar(false);
        }
    }

    // Variables declaration - do not modify                    
    private javax.persistence.EntityManager entityManager1;
    private javax.swing.JButton exitButton;
    private javax.swing.JButton jButton1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JScrollPane jScrollPane1;
    private java.util.List<Usr> list1;
    private java.util.List<Usercont> list2;
    private javax.swing.JButton newButton;
    private javax.persistence.Query query1;
    private javax.swing.JButton saveButton;
    private javax.swing.JButton updateButton;
    private javax.swing.JLabel userAddressLabel;
    private javax.swing.JTextField userAddressTextField;
    private javax.swing.JLabel userBarCodeLabel;
    private javax.swing.JTextField userBarCodeTextField;
    private javax.swing.JLabel userCityLabel;
    private javax.swing.JTextField userCityTextField;
    private javax.swing.JLabel userCodeLabel;
    private javax.swing.JTextField userCodeTextField;
    private com.toedter.calendar.JDateChooser userDateProfileDateChooser;
    private javax.swing.JLabel userDateProfileLabel;
    private javax.swing.JComboBox userDepFacComboBox;
    private javax.swing.JLabel userDepFacLabel;
    private javax.swing.JLabel userEmailLabel;
    private javax.swing.JTextField userEmailTextField;
    private javax.swing.JComboBox userFacComboBox;
    private javax.swing.JLabel userFacLabel;
    private javax.swing.JLabel userIdLabel;
    private javax.swing.JTextField userIdTextField;
    private javax.swing.JComboBox userIdTypeComboBox;
    private javax.swing.JLabel userIdTypeLabel;
    private javax.swing.JLabel userLastNameLabel;
    private javax.swing.JTextField userLastNameTextField;
    private javax.swing.JLabel userMobLabel;
    private javax.swing.JTextField userMobTextField;
    private javax.swing.JLabel userNameLabel;
    private javax.swing.JTextField userNameTextField;
    private javax.swing.JLabel userPhoneLabel;
    private javax.swing.JTextField userPhoneTextField;
    private javax.swing.JTable userTable;
    private javax.swing.JComboBox userTypeComboBox;
    private javax.swing.JLabel userTypeLabel;
    private javax.swing.JComboBox userUnivComboBox;
    private javax.swing.JLabel userUnivLabel;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration                  

}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Conexiones?

Por qué haces un commit a la transacción antes de comenzarla? Y veo que también dejas una transacción abierta, eso no debería ser así, sino que inicias transacción hasta el momento en que vas a guardar, intentas guardar, si no se puede haces rollback.

Sólo veo que haces persist al estudiante, no a los otros objetos relacionados. Dependiendo de cómo hayas definido la entidad Estudiante y las demás entidades que tiene relacionadas, se persistirán o no, además de que no se ve que le pases los objetos de las otras entidades al estudiante, con estudiante.setAlgunaOtraEntidad(bla), para que el estudiante tenga la relación con esos otros objetos de otras entidades y se puedan persistir.

Imagen de chigwaco

gracias por responder

gracias por responder ezamudio, la verdad soy algo nuevo en esto de los formularios ej java y de hecho lo que estoy haciendo lo tome de un ejemplo que encontré por aquí en el internet. sin percatarme al principio que haría falta algo para el funcionamiento que quiero que haga. más o menos entiendo lo que me explicas sobre pasarle los objetos al de estudiante para su persistencia posteriormente. me voy a poner entonces a documentarme un poco sobre lo que me dices...... sabes de alguna referencia que me puedas aconsejar por favor?

hasta pronto y gracias :)

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">