Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用Java中的hibernate从数据库中填充组合框_Java_Hibernate_Swing_Database_Jcombobox - Fatal编程技术网

利用Java中的hibernate从数据库中填充组合框

利用Java中的hibernate从数据库中填充组合框,java,hibernate,swing,database,jcombobox,Java,Hibernate,Swing,Database,Jcombobox,嘿 我正在用java中的hibernate开发一个基于swing的小应用程序。我想从数据库Column中填充组合框。我怎么能做到 我不知道在哪里(在initComponents下,按钮actionperformd下)我需要做什么 为了保存,我正在使用jbutton,其代码如下: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { int idd=Integer.parseInt(jTextField1.

我正在用java中的hibernate开发一个基于swing的小应用程序。我想从数据库Column中填充组合框。我怎么能做到

我不知道在哪里(在
initComponents
下,
按钮actionperformd
下)我需要做什么

为了保存,我正在使用jbutton,其代码如下:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

 int idd=Integer.parseInt(jTextField1.getText());

 String name=jTextField2.getText();

 String description=jTextField3.getText();

 Session session = null;

 SessionFactory sessionFactory = new Configuration().configure()
    .buildSessionFactory();

 session = sessionFactory.openSession();

 Transaction transaction = session.getTransaction();

   try {


       ContactGroup con = new ContactGroup();

       con.setId(idd);

       con.setGroupName(name);
       con.setGroupDescription(description);



       transaction.begin(); 
       session.save(con); 
       transaction.commit(); 


      } catch (Exception e) {
       e.printStackTrace();
      }

      finally{
       session.close(); 
      }    
}

我不使用Hibernate,但是给定一个名为
Customer
的JPA实体和一个名为
CustomerJpaController
的JPA控制器,您可以这样做

更新:更新代码以反映切换到EclipseLink(JPA2.1)作为持久性库

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JFrame;

/**
* @see http://stackoverflow.com/a/2531942/230513
*/
public class CustomerTest implements Runnable {

    public static void main(String[] args) {
        EventQueue.invokeLater(new CustomerTest());
    }

    @Override
    public void run() {
        CustomerJpaController con = new CustomerJpaController(
            Persistence.createEntityManagerFactory("CustomerPU"));
        List<Customer> list = con.findCustomerEntities();
        JComboBox combo = new JComboBox(list.toArray());
        combo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBox cb = (JComboBox) e.getSource();
                Customer c = (Customer) cb.getSelectedItem();
                System.out.println(c.getId() + " " + c.getName());
            }
        });
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(combo);
        f.pack();
        f.setVisible(true);
    }
}

您可以在本文中了解更多信息。

我不使用Hibernate,但是给定一个名为
Customer
的JPA实体和一个名为
CustomerJPA控制器
,您可以这样做

更新:更新代码以反映切换到EclipseLink(JPA2.1)作为持久性库

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JFrame;

/**
* @see http://stackoverflow.com/a/2531942/230513
*/
public class CustomerTest implements Runnable {

    public static void main(String[] args) {
        EventQueue.invokeLater(new CustomerTest());
    }

    @Override
    public void run() {
        CustomerJpaController con = new CustomerJpaController(
            Persistence.createEntityManagerFactory("CustomerPU"));
        List<Customer> list = con.findCustomerEntities();
        JComboBox combo = new JComboBox(list.toArray());
        combo.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JComboBox cb = (JComboBox) e.getSource();
                Customer c = (Customer) cb.getSelectedItem();
                System.out.println(c.getId() + " " + c.getName());
            }
        });
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(combo);
        f.pack();
        f.setVisible(true);
    }
}

您可以在本文中了解更多信息。

您不应该在Swing事件调度线程中执行数据库访问-它会在数据库通信完成之前阻塞UI。看看SwingWorker和本教程:您不应该在Swing事件调度线程中执行数据库访问-它会在数据库通信完成之前阻塞UI。看看SwingWorker和本教程: