Не могу добавить запись в таблицу Hibernate

Пытаюсь реализовать добавление записи в таблицу sotrudnik через Hibernate. Таблица sotrudnik связана с таблицей otdel по полю otdelenie_id. При добавлении выходит ошибка:

Could not determine type for: models.Otdel, at table: sotrudnik, for columns: [org.hibernate.mapping.Column(otdel)]

С чем это связано, что не так я настроил?

Класс Sotrudnik.class

@Entity
@Table(name = "sotrudnik")
public class Sotrudnik {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column
    private String fio;

    @Column
    private int otdelenie_id;

    private Otdel otdel;

    public Sotrudnik() {    }

    public Sotrudnik(String fio, int otdelenie_id) {
        this.fio = fio;
        this.otdelenie_id = otdelenie_id;
    }

    @ManyToOne
    @JoinColumn(name = "otdelenie_id")
    public Otdel getOtdel() {
        return otdel;
    }

    public void setOtdel(Otdel otdel) {  this.otdel = otdel;  }

    public int getId() {   return id;    }

    public void setId(int id) {        this.id = id;    }

    public String getFio() {        return fio;    }

    public void setFio(String fio) {        this.fio = fio;    }

    public int getOtdelenie_id() {        return otdelenie_id;    }

    public void setOtdelenie_id(int otdelenie_id) {        this.otdelenie_id = otdelenie_id;    }
}

Класс Otdel.class

@Entity
@Table(name = "otdel")
public class Otdel {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column
    private String text;

    private List<Sotrudnik> sotrudnikList = new ArrayList<Sotrudnik>();

    @OneToMany(mappedBy = "otdel")
    public List<Sotrudnik> getSotrudnikList() {
        return sotrudnikList;
    }

    public void setSotrudnikList(List<Sotrudnik> sotrudnikList) {        this.sotrudnikList = sotrudnikList;    }

    public Otdel() {    }

    public Otdel(String text) {        this.text = text;    }

    public String getText() {        return text;    }

    public void setText(String text) {        this.text = text;    }

    public int getId() {        return id;    }

    public void setId(int id) {        this.id = id;    }
}

Класс OtdelDao

public class OtdelDao {
    public void save(Otdel otdel) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction transaction = session.beginTransaction();
        session.save(otdel);
        transaction.commit();
        session.close();
    }
}

Класс SotrudnikDao

public class SotrudnikDao {
    public void save(Sotrudnik s) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction transaction = session.beginTransaction();
        session.save(s);
        transaction.commit();
        session.close();
    }
}

Main.class

public class Main {
    public static void main(String[] args) {

        Sotrudnik sotrudnik = new Sotrudnik("Test", 1);

        SotrudnikDao sotrudnikDao = new SotrudnikDao();

        sotrudnikDao.save(sotrudnik);

    }
}

StackTrace:

org.hibernate.MappingException: Could not determine type for: models.Otdel, at table: sotrudnik, for columns: [org.hibernate.mapping.Column(otdel)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:512)
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:479)
    at org.hibernate.mapping.Property.isValid(Property.java:227)
    at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:625)
    at org.hibernate.mapping.RootClass.validate(RootClass.java:267)
    at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:354)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:307)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:728)
    at utils.HibernateSessionFactoryUtil.getSessionFactory(HibernateSessionFactoryUtil.java:23)
    at dao.SotrudnikDao.save(SotrudnikDao.java:10)
    at start.Main.main(Main.java:13)
Exception in thread "main" java.lang.NullPointerException
    at dao.SotrudnikDao.save(SotrudnikDao.java:10)
    at start.Main.main(Main.java:13)

Ответы (2 шт):

Автор решения: Adm123

В данном случае Вам не нужно у сотрудника поле private private int otdelenie_id;

Вместо этого напишите

@ManyToOne
@JoinColumn(name = "otdelenie_id")
private Otdel otdel;

https://www.baeldung.com/jpa-join-column - вот тут почитайте

→ Ссылка
Автор решения: Morningstar-

Создание сотрудника подразумевает наличие отдела, так как сотрудника без отдела просто быть не может. А вот отдел может быть без сотрудников (не наняли и т.п.).

Поэтому сначала создайте отдел, а затем уже сотрудника.

→ Ссылка