Problem mit hibernate und JCombobox

Alexander1307

Grünschnabel
Habe ein problem aber weis nicht genau woran das liegt. Ich bescgreibe mal kurz:

Also ich lade paar datensätze (Autoren) aus der datenbank mit hibernate. und gebe dieser in einer JComboBox aus. bis dahin funktioniert das . Jetzt will ich genaueres über einen Autor wissen also höre ich ItemEvent ab ob etwas in der kombobox ausgewählt wurde. dachte ich. sobald ich in dem Item Event die selectOneQuery() aufrufe lädt er mir nur den ersten datensatz und ich sehe nur einen datensatz in meiner JCombobox. ich will aber alle Autoren weiter hin noch sehen. hier der Code:
Code:
import java.awt.*;
import java.awt.event.*;


import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import org.apache.log4j.Logger;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;


class AutorLaden extends JFrame implements ActionListener, ItemListener
{
	private static final long serialVersionUID = 1L;
	private int id;
	private JLabel lblName = new JLabel(" Name : ");
	private JLabel lblVorname = new JLabel (" Vorname : ");
	private JLabel lblNickname = new JLabel ( " Nickname : ");
	private JLabel lblWahl = new JLabel ( " bitte wählen : ");
	
	private JComboBox cboNick = new JComboBox();
	private JTextField txtName = new JTextField(10);
	private JTextField txtVorname = new JTextField(10);
	private JTextField txtNickname = new JTextField(15);
	
	private JButton btnLaden = new JButton(" Laden ");
	private JButton btnAbbrechen = new JButton(" Abbrechen ");
	
	private JPanel autorPanel = new JPanel();
	private JPanel btnPanel = new JPanel();
	private ViewComponent fotoComponent = new ViewComponent();
	
	private int count =  selectQuery().length;
	
	
	private String[]autorenArray = new String[count];
	private String[]oneAutorArray = new String[1];
	
	private JFrame Parent;
	
		
	public AutorLaden()
	{
		//Parent = parent;
		
		setTitle("Autor laden");
		lblName.setOpaque(true);
    	lblName.setBackground(new Color(166,211,249));
    	lblName.setBorder(new EtchedBorder(Color.BLUE,Color.CYAN));
    	
    	lblVorname.setOpaque(true);
    	lblVorname.setBackground(new Color(166,211,249));
    	lblVorname.setBorder(new EtchedBorder(Color.BLUE,Color.CYAN));
    	
    	lblNickname.setOpaque(true);    	
    	lblNickname.setBackground(new Color(166,211,249));
    	lblNickname.setBorder(new EtchedBorder(Color.BLUE,Color.CYAN));
    	
    	lblWahl.setOpaque(true);    	
    	lblWahl.setBackground(new Color(166,211,249));
    	lblWahl.setBorder(new EtchedBorder(Color.BLUE,Color.CYAN));
    	
    	btnLaden.addActionListener(this);
    	btnAbbrechen.addActionListener(this);
    	cboNick.addItemListener(this);
    	
    	
    	autorPanel.setLayout (new GridLayout(2,6));
    	autorPanel.setBorder(new TitledBorder(new EtchedBorder(Color.BLUE,Color.CYAN),"Autor"));
    	autorPanel.setBackground(new Color(129,190,241));
    	autorPanel.add(lblName);
    	autorPanel.add(txtName);
    	autorPanel.add(lblVorname);
    	autorPanel.add(txtVorname);
    	autorPanel.add(lblNickname);
    	autorPanel.add(txtNickname);
    	autorPanel.add(lblWahl);
    	autorPanel.add(cboNick);
    	    	
    	btnPanel.setLayout (new FlowLayout());    	
    	btnPanel.setBorder(new EtchedBorder(Color.BLUE,Color.CYAN));
    	btnPanel.setBackground(new Color(129,190,241));
    	btnPanel.add(btnLaden);
    	btnPanel.add(btnAbbrechen);

    	Container C = getContentPane();
    	C.add(autorPanel,BorderLayout.NORTH);
    	C.add(btnPanel,BorderLayout.SOUTH);
    	C.add(fotoComponent, BorderLayout.CENTER);
    	fotoComponent.setVisible(true);
    	
		setSize(640,350);
    	setResizable(false);    	
    	Dimension D = Toolkit.getDefaultToolkit().getScreenSize();
    	setLocation ( (D.width - getSize().	width)/2,(D.height - getSize().height)/2);
    	setVisible (true);
    	fuelleJCombobox();
    	
	}
	
	private void fuelleJCombobox()
	{
		autorenArray = selectQuery();
    	JOptionPane.showMessageDialog(null, "anzahl array : "+count);
    	try 
    	{
			for (int i = 0; i <= count; i++ )
			{
				cboNick.addItem(autorenArray[i].toString());
			}
		}     	
    	catch (Exception e) 
    	{
			e.printStackTrace();
		}
	}
	public String[] selectQuery() {
		String[] autorenArray ;
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		Transaction tx = session.beginTransaction();
		List autoren = session.createQuery("select autor_nickname from Autoren as autoren").list();
		autorenArray = new String[autoren.size()];
		autoren.toArray(autorenArray);
		tx.commit();
		return autorenArray;
	}
	public void selectOneQuery(String autor_nickname) {
		
		Session session = InitSessionFactory.getInstance().getCurrentSession();
		Transaction tx = session.beginTransaction();
		List autoren1 = session.createQuery("select autoren.autor_id, autoren.autor_name, autoren.autor_vorname,autoren.autor_nickname, autoren.autor_foto from Autoren Where autor_nickname="+autor_nickname).list();
		//List autoren1 = session.createQuery("select autor_nickname from Autoren as autoren").list();
		autoren1.toArray(oneAutorArray);
		
		//for (Iterator iter = honeys.iterator(); iter.hasNext();) {
			//Honey element = (Honey) iter.next();
			//log.debug(element);
		//}
		tx.commit();
		
	}
	
	public void actionPerformed(ActionEvent ae) 
	{
		if(ae.getSource().equals(btnLaden));
		{
			
			
		}		
		if(ae.getSource().equals(btnAbbrechen));
		{
	       this.dispose();
		}
		
	}
	
	public void itemStateChanged(ItemEvent ie) 
	{
		if(ie.getStateChange() == ItemEvent.SELECTED )
		{	
			JOptionPane.showMessageDialog(null, "select event : 1");
			selectOneQuery(cboNick.getSelectedItem().toString());
			JOptionPane.showMessageDialog(null, "select event : 2");
			
	    } 
	}
}

Vielleicht stimmt was in der HQL in der methode selectoneQuery(String autor_nickname) aber ich weis es nicht.

für hilfe wäre ich sehr dankbar
 
Ich habe rausgefunden das wenn was der Combobox hinzugefügt wird, sofort ein ItemEvent.SELECTED ausgelöst und das führt bei mir zu problemen. oder liege ich da falsch
 
Zuletzt bearbeitet:
Zurück