Problema ao tentar salvar combobox no banco de dados(RESOLVIDO)

Ola estou tentando salvar uma jcombobox no banco de dados quando a pessoa seleciona o item
ele ja salva estou usando o hibernate

mas até agora nao deu certo alguem pode me dar uma luz

ao tentar salvar da estes erros

Hibernate: insert into Cidade (estado_codigo, nome, codigo) values (?, ?, ?)
dez 31, 2019 2:57:03 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 23503
dez 31, 2019 2:57:03 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ERROR: insert or update on table “cidade” violates foreign key constraint “fkqed4xf4didnaoj5gas05bjwd9”
Detalhe: Key (estado_codigo)=(1) is not present in table “estado”.
dez 31, 2019 2:57:03 PM org.hibernate.internal.ExceptionMapperStandardImpl mapManagedFlushFailure
ERROR: HHH000346: Error during managed flush [org.hibernate.exception.ConstraintViolationException: could not execute statement]
Exception in thread “AWT-EventQueue-0” javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1460)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:511)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3283)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2479)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:98)
at com.meson.sistemavendas.Tela.TelaCidade$2.actionPerformed(TelaCidade.java:122)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:112)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3171)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3686)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:90)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1454)
… 45 more
Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table “cidade” violates foreign key constraint “fkqed4xf4didnaoj5gas05bjwd9”
Detalhe: Key (estado_codigo)=(1) is not present in table “estado”.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2198)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:562)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:366)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
… 53 more

Codigo da tabela cidade

package com.meson.sistemavendas.Domain;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

/**
*

@author Dani
*/
@SuppressWarnings("serial")
@Entity
public class Cidade implements Serializable{
@Column(length = 50, nullable = false)
private String nome;

@ManyToOne(optional = true)
@JoinColumn(nullable = true)
private Estado estado;
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private Long codigo;

public Long getCodigo() {
return codigo;
}

public void setCodigo(Long codigo) {
this.codigo = codigo;
}

@Override
public String toString() {
return String.format("%s[codigo=%d]", getClass().getSimpleName(), getCodigo());
}

public String getNome() {
return nome;
}

public void setNome(String nome) {
this.nome = nome;
}

public Estado getEstado() {
return estado;
}

public void setEstado(Estado estado) {
this.estado = estado;
}
}

Código da tabela estado

package com.meson.sistemavendas.Domain;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@SuppressWarnings("serial")
@Entity
public class Estado implements Serializable {
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Id
private Long codigo;
@Column(length = 2, nullable = false)
private String sigla;

@Column(length = 50, nullable = false)
private String nome;
    
    public Long getCodigo() {
	return codigo;
}

public void setCodigo(Long codigo) {
	this.codigo = codigo;
}

public String toString() {
	return String.format("%s[codigo=%d]", getClass().getSimpleName(), getCodigo());
}

public String getSigla() {
	return sigla;
}

public void setSigla(String sigla) {
	this.sigla = sigla;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}
}

meu combobox

JComboBox comboBox = new JComboBox();

		Criteria consulta = sessao.createCriteria(Estado.class);
		consulta.addOrder(Order.asc("nome"));
		List<Estado> resultado = consulta.list();
		System.out.println(resultado);
		for (Estado estado_ : resultado) {
			comboBox.addItem(estado_.getSigla());
		}

meu salvar

btnSalvar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {// GEN-FIRST:event_jButton1ActionPerformed
				// TODO add your handling code here:
				Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
				Transaction transacao = null;
				Cidade cidade = new Cidade();
				Estado estado = new Estado();

				try {
					cidade.setNome(textField.getText());
					cidade.setCodigo((long) comboBox.getSelectedIndex());
					cidade.setEstado(estado);// vc marcou o mapeamento como not null, então tem que setar
					transacao = sessao.beginTransaction();
					sessao.save(cidade);
					transacao.commit();
				} catch (RuntimeException erro) {
					if (transacao != null) {
						transacao.rollback();
					}
					throw erro;
				} finally {
					sessao.close();
				}
			}

Alterei o codigo esta até salvando o cadastro cidade mas não a combobox selecionada
o estado codigo fica nulo nao salva nada la dentro

por exemplo RS o código na tabela estado é 49 como eu conseguiria passar esse código 49 para a tabela cidade para salvar la?Programadores EXperientes por favor?

btnSalvar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {// GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
Transaction transacao = null;
Cidade cidade = new Cidade();
Estado estado = new Estado();

			try {
				//cidade.setNome(textField.getText());
				//cidade.setCodigo((long) comboBox.getSelectedIndex());
				//cidade.setEstado(estado);// vc marcou o mapeamento como not null, então tem que setar
				Criteria consulta = sessao.createCriteria(Cidade.class);
				consulta.add(Restrictions.eq("estado.codigo", estadoCodigo));	
				consulta.addOrder(Order.asc("nome"));
				List<Cidade> resultado = consulta.list();
				cidade.setNome(textField.getText());
				System.out.println(estadoCodigo);
				transacao = sessao.beginTransaction();
				sessao.save(cidade);
				transacao.commit();
			} catch (RuntimeException erro) {
				if (transacao != null) {
					transacao.rollback();
				}
				throw erro;
			} finally {
				sessao.close();
			}
		}
	});
}

}