Problema com propriedade nullable no Hibernate

Bom dia gente,

estou com um problema na minha aplicação, não chega a ser grave, mas eu não estou conseguindo entender o problema,

eu tenho uma atributo da minha classe marcado como nullable=false, na hora que eu crio o banco de dados através do hibernate, devido ao atributo nullable=false, ele coloca esta propridedade como NOT NULL no banco de dados, até ai tudo bem.

Porém na hora que eu vou remover um registro deste banco de dados, com a logica do hibernate para usar o comando ‘delete’ eu preciso passar apenas o id, porem ele da o seguinte erro:

org.hibernate.PropertyValueException: not-null property references a null or transient value: br.salesianos.modelo.Inspetoria.ins_nome

ou seja, ele pede que eu mande o atributo ins_nome para que o hibernate permita deletar o arquivo, mas isso nao é necessario…

Ai fico sem entender esse comportamento do hibernate, até pensei em nao usar o atributo nullable=false, mas eu gostaria de usar o atributo pois ele marca o banco de dados com a propriedade NOT NULL que pra mim é util, pois se eu esquecer de fazer a validação na view(sei q isso é errado, mas foi a maneira mais facil q achei de fazer) o banco de dados vai validar pra mim e exibir um erro na tela.

Procurei inclusive na documentação do hibernate, mas não consegui achar uma solução pra minha duvida, caso alguém possa me explicar, ficarei mutio agradeico, t+

ps: se eu remover o nullable=false, consigo excluir normalmente o registro no banco de dados

Classe Inspetoria

@Entity
public class Inspetoria implements Serializable {

    @Id
    @SequenceGenerator(name="generator_inspetoria",sequenceName="sequence_inspetoria")
    @GeneratedValue(generator="generator_inspetoria")
    private Integer ins_id;
    
    @ManyToOne
    @ForeignKey(name="inspetoria_fkey_cidade_01")
    @JoinColumn(name="cid_id")
    private Cidade cidade;

    @Column(length=100)
    private String ins_sigla;

    @Column(length=100, nullable=false )
    private String ins_nome;

//setters e getters

Classe GravaInspetoria(apesar do nome, alem de gravar, ele tambem atualiza e exclui)

@ManagedBean
public class GravaInspetoria {

    private Integer ins_id;
    private Integer cid_id;
    private String ins_sigla;
    private String ins_nome;
    Session sessao = CriadorDeSessaoNovo.getSession();
    Transaction tx = sessao.beginTransaction();

    public void limpante() {
        this.ins_id = null;
        this.cid_id = null;
        this.ins_sigla = null;
        this.ins_nome = null;
    }

    public void gravar() {
        try {

            Cidade obj_cidade = new Cidade();
            obj_cidade.setCid_id(getCid_id());

            Inspetoria obj_inspetoria = new Inspetoria();

            if (getIns_id() != 0) {
                obj_inspetoria.setIns_id(getIns_id());
            }

            obj_inspetoria.setIns_sigla(getIns_sigla().toUpperCase());
            obj_inspetoria.setIns_nome(WordUtils.capitalizeFully(getIns_nome()));
            obj_inspetoria.setCidade(obj_cidade);

            sessao.saveOrUpdate(obj_inspetoria);
            tx.commit();
            sessao.close();
            limpante();
            FacesContext.getCurrentInstance().addMessage("FormInspetoria:gravar", new FacesMessage("Informações gravadas com sucesso!"));
            obj_inspetoria = new Inspetoria();

        } catch (Exception erro) {
            System.out.println("Problema: " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("FormInspetoria:excluir", new FacesMessage("Falha ao gravar informações!"));
        }
    }

    public void excluir() {
        try {

            Cidade obj_cidade = new Cidade();
            obj_cidade.setCid_id(getCid_id());

            Inspetoria obj_inspetoria = new Inspetoria();
            obj_inspetoria.setIns_id(getIns_id());

            sessao.delete(obj_inspetoria);
            tx.commit();
            sessao.close();
            limpante();
            FacesContext.getCurrentInstance().addMessage("FormInspetoria:excluir", new FacesMessage("Informações excluídas com sucesso!"));

        } catch (Exception erro) {
            System.out.println("Problema: " + erro);
            tx.rollback();
            sessao.close();
            FacesContext.getCurrentInstance().addMessage("FormInspetoria:excluir", new FacesMessage("Falha ao excluir informações!"));
        }
    }