Java 如何在jComboBox中检索绑定在数据库表中的对象并将其存储到另一个表中

Java 如何在jComboBox中检索绑定在数据库表中的对象并将其存储到另一个表中,java,swing,netbeans,jcombobox,Java,Swing,Netbeans,Jcombobox,我在数据库中创建了一个名为model和item的表。并创建了类模型和项。 餐桌 model,它有以下字段:model\u ID和model\u description。对于表项目:项目ID、项目描述、型号ID 通过使用Netbeans 8.2绑定表模型和jComboBox,我能够在jComboBox中显示模型描述 现在,我要做的是将jComboBox中选定的项存储到我的项表中 我尝试过以下代码: Session session = NewHibernateUtil.getSessionFacto

我在数据库中创建了一个名为model和item的表。并创建了类模型和项。 餐桌 model,它有以下字段:model\u ID和model\u description。对于表项目:项目ID、项目描述、型号ID

通过使用Netbeans 8.2绑定表模型和jComboBox,我能够在jComboBox中显示模型描述

现在,我要做的是将jComboBox中选定的项存储到我的项表中

我尝试过以下代码:

Session session = NewHibernateUtil.getSessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Model model = (Model) session.get(Model.class, jComboBox.getSelectedIndex+1);
Item item = new Item();
item.setDescription(description);
item.setModel(model);
session.save(item);
transaction.commit();
session.close();
这段代码的问题是,如果我将模型描述的显示按升序/降序排序,它将不会返回正确的对象

有没有办法将选中的项直接存储为jComboBox中的模型对象

谢谢你的帮助

通过使用Netbeans 8.2绑定表模型和jComboBox,我能够在jComboBox中显示模型描述

我不知道Netbeans绑定做什么,但对我来说这似乎不是一个好的解决方案。如果您离开Netbeans平台,您的代码将如何工作,或者将来您将如何做到这一点

相反,我建议您可以在JComboBox中存储一个自定义对象。因此,您可以将项目对象存储在组合框中,然后创建自定义渲染器以在组合框中显示描述

当您需要仅使用的选定项目时:

comboBox.getSelectedItem() 
并且您可以访问Item对象及其所有属性

自定义渲染器的外观类似于:

class FooRenderer extends BasicComboBoxRenderer
{
    public Component getListCellRendererComponent(
        JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {
        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

        if (value instanceof Foo)
        {
            Foo foo = (Foo)value;
            setText( foo.getDescription() );
        }

        return this;
    }
}
将Foo对象替换为Item对象

但是,当您使用自定义渲染器时,您将打破组合框,因为您将无法再通过键入项目描述的第一个字符来使用键盘选择项目。有关此问题和解决方案的更多信息,请参阅