Index: src/main/java/mk/ukim/finki/busngo/BusNGoApplication.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/BusNGoApplication.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/BusNGoApplication.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.busngo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class BusNGoApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(BusNGoApplication.class, args);
+    }
+
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Avtobus.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Avtobus.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Avtobus.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,67 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Collection;
+import java.util.Objects;
+
+@Entity
+public class Avtobus {
+    private String aRegistracija;
+    private String aSeriskiBroj;
+    private Short aBrojSedista;
+    private Collection<Instancanalinija> instancanalinijasByARegistracija;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "a_registracija", nullable = false, length = 8)
+    public String getaRegistracija() {
+        return aRegistracija;
+    }
+
+    public void setaRegistracija(String aRegistracija) {
+        this.aRegistracija = aRegistracija;
+    }
+
+    @Basic
+    @Column(name = "a_seriski_broj", nullable = false)
+    public String getaSeriskiBroj() {
+        return aSeriskiBroj;
+    }
+
+    public void setaSeriskiBroj(String aSeriskiBroj) {
+        this.aSeriskiBroj = aSeriskiBroj;
+    }
+
+    @Basic
+    @Column(name = "a_broj_sedista", nullable = true)
+    public Short getaBrojSedista() {
+        return aBrojSedista;
+    }
+
+    public void setaBrojSedista(Short aBrojSedista) {
+        this.aBrojSedista = aBrojSedista;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Avtobus avtobus = (Avtobus) o;
+        return Objects.equals(aRegistracija, avtobus.aRegistracija) && Objects.equals(aSeriskiBroj, avtobus.aSeriskiBroj) && Objects.equals(aBrojSedista, avtobus.aBrojSedista);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(aRegistracija, aSeriskiBroj, aBrojSedista);
+    }
+
+    @OneToMany(mappedBy = "avtobusByARegistracija")
+    public Collection<Instancanalinija> getInstancanalinijasByARegistracija() {
+        return instancanalinijasByARegistracija;
+    }
+
+    public void setInstancanalinijasByARegistracija(Collection<Instancanalinija> instancanalinijasByARegistracija) {
+        this.instancanalinijasByARegistracija = instancanalinijasByARegistracija;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Bilet.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Bilet.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Bilet.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,114 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+import mk.ukim.finki.busngo.model.enums.BILET_STATUS;
+
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.Objects;
+
+@Entity
+public class Bilet {
+    private Long bId;
+    private Timestamp bDatumNaKupuvanje;
+    private BILET_STATUS bStatus;
+    private Long patnikKId;
+    private Long tbId;
+    private Korisnik korisnikByPatnikKId;
+    private Tipbilet tipbiletByTbId;
+    private Collection<Vozenje> vozenjesByBId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "b_id", nullable = false)
+    public Long getbId() {
+        return bId;
+    }
+
+    public void setbId(Long bId) {
+        this.bId = bId;
+    }
+
+    @Basic
+    @Column(name = "b_datum_na_kupuvanje", nullable = false)
+    public Timestamp getbDatumNaKupuvanje() {
+        return bDatumNaKupuvanje;
+    }
+
+    public void setbDatumNaKupuvanje(Timestamp bDatumNaKupuvanje) {
+        this.bDatumNaKupuvanje = bDatumNaKupuvanje;
+    }
+
+    @Basic
+    @Column(name = "b_status", nullable = false)
+    @Enumerated(EnumType.STRING)
+    public BILET_STATUS getbStatus() {
+        return bStatus;
+    }
+
+    public void setbStatus(BILET_STATUS bStatus) {
+        this.bStatus = bStatus;
+    }
+
+    @Basic
+    @Column(name = "patnik_k_id", nullable = true)
+    public Long getPatnikKId() {
+        return patnikKId;
+    }
+
+    public void setPatnikKId(Long patnikKId) {
+        this.patnikKId = patnikKId;
+    }
+
+    @Basic
+    @Column(name = "tb_id", nullable = true)
+    public Long getTbId() {
+        return tbId;
+    }
+
+    public void setTbId(Long tbId) {
+        this.tbId = tbId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Bilet bilet = (Bilet) o;
+        return Objects.equals(bId, bilet.bId) && Objects.equals(bDatumNaKupuvanje, bilet.bDatumNaKupuvanje) && Objects.equals(bStatus, bilet.bStatus) && Objects.equals(patnikKId, bilet.patnikKId) && Objects.equals(tbId, bilet.tbId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(bId, bDatumNaKupuvanje, bStatus, patnikKId, tbId);
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "patnik_k_id", referencedColumnName = "k_id")
+    public Korisnik getKorisnikByPatnikKId() {
+        return korisnikByPatnikKId;
+    }
+
+    public void setKorisnikByPatnikKId(Korisnik korisnikByPatnikKId) {
+        this.korisnikByPatnikKId = korisnikByPatnikKId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "tb_id", referencedColumnName = "tb_id")
+    public Tipbilet getTipbiletByTbId() {
+        return tipbiletByTbId;
+    }
+
+    public void setTipbiletByTbId(Tipbilet tipbiletByTbId) {
+        this.tipbiletByTbId = tipbiletByTbId;
+    }
+
+    @OneToMany(mappedBy = "biletByBId")
+    public Collection<Vozenje> getVozenjesByBId() {
+        return vozenjesByBId;
+    }
+
+    public void setVozenjesByBId(Collection<Vozenje> vozenjesByBId) {
+        this.vozenjesByBId = vozenjesByBId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Instancanalinija.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Instancanalinija.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Instancanalinija.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,144 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.Objects;
+
+@Entity
+public class Instancanalinija {
+    private Long inlId;
+    private Timestamp inlDatumStart;
+    private Timestamp inlDatumEnd;
+    private Long vozacKId;
+    private String aRegistracija;
+    private Integer liId;
+    private Korisnik korisnikByVozacKId;
+    private Avtobus avtobusByARegistracija;
+    private Linija linijaByLiId;
+    private Collection<Vozenje> vozenjesByInlId;
+    private Collection<Kontroli> kontrolisByInlId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "inl_id", nullable = false)
+    public Long getInlId() {
+        return inlId;
+    }
+
+    public void setInlId(Long inlId) {
+        this.inlId = inlId;
+    }
+
+    @Basic
+    @Column(name = "inl_datum_start", nullable = false)
+    public Timestamp getInlDatumStart() {
+        return inlDatumStart;
+    }
+
+    public void setInlDatumStart(Timestamp inlDatumStart) {
+        this.inlDatumStart = inlDatumStart;
+    }
+
+    @Basic
+    @Column(name = "inl_datum_end", nullable = true)
+    public Timestamp getInlDatumEnd() {
+        return inlDatumEnd;
+    }
+
+    public void setInlDatumEnd(Timestamp inlDatumEnd) {
+        this.inlDatumEnd = inlDatumEnd;
+    }
+
+    @Basic
+    @Column(name = "vozac_k_id", nullable = false)
+    public Long getVozacKId() {
+        return vozacKId;
+    }
+
+    public void setVozacKId(Long vozacKId) {
+        this.vozacKId = vozacKId;
+    }
+
+    @Basic
+    @Column(name = "a_registracija", nullable = true, length = 8)
+    public String getaRegistracija() {
+        return aRegistracija;
+    }
+
+    public void setaRegistracija(String aRegistracija) {
+        this.aRegistracija = aRegistracija;
+    }
+
+    @Basic
+    @Column(name = "li_id", nullable = false)
+    public Integer getLiId() {
+        return liId;
+    }
+
+    public void setLiId(Integer liId) {
+        this.liId = liId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Instancanalinija that = (Instancanalinija) o;
+        return Objects.equals(inlId, that.inlId) && Objects.equals(inlDatumStart, that.inlDatumStart) && Objects.equals(inlDatumEnd, that.inlDatumEnd) && Objects.equals(vozacKId, that.vozacKId) && Objects.equals(aRegistracija, that.aRegistracija) && Objects.equals(liId, that.liId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(inlId, inlDatumStart, inlDatumEnd, vozacKId, aRegistracija, liId);
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "vozac_k_id", referencedColumnName = "k_id", nullable = false)
+    public Korisnik getKorisnikByVozacKId() {
+        return korisnikByVozacKId;
+    }
+
+    public void setKorisnikByVozacKId(Korisnik korisnikByVozacKId) {
+        this.korisnikByVozacKId = korisnikByVozacKId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "a_registracija", referencedColumnName = "a_registracija")
+    public Avtobus getAvtobusByARegistracija() {
+        return avtobusByARegistracija;
+    }
+
+    public void setAvtobusByARegistracija(Avtobus avtobusByARegistracija) {
+        this.avtobusByARegistracija = avtobusByARegistracija;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "li_id", referencedColumnName = "li_id", nullable = false)
+    public Linija getLinijaByLiId() {
+        return linijaByLiId;
+    }
+
+    public void setLinijaByLiId(Linija linijaByLiId) {
+        this.linijaByLiId = linijaByLiId;
+    }
+
+    @OneToMany(mappedBy = "instancanalinijaByInlId")
+    public Collection<Vozenje> getVozenjesByInlId() {
+        return vozenjesByInlId;
+    }
+
+    public void setVozenjesByInlId(Collection<Vozenje> vozenjesByInlId) {
+        this.vozenjesByInlId = vozenjesByInlId;
+    }
+
+    @OneToMany(mappedBy = "instancanalinijaByInlId")
+    public Collection<Kontroli> getKontrolisByInlId() {
+        return kontrolisByInlId;
+    }
+
+    public void setKontrolisByInlId(Collection<Kontroli> kontrolisByInlId) {
+        this.kontrolisByInlId = kontrolisByInlId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Kazna.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Kazna.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Kazna.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,154 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.sql.Timestamp;
+import java.util.Objects;
+
+@Entity
+public class Kazna {
+    private Long kzId;
+    private Double kzIznos;
+    private Boolean kzPlateno;
+    private Timestamp kzDatum;
+    private Timestamp kzDatumPlateno;
+    private String kzDokument;
+    private Long kondukterKId;
+    private Long kontrolaId;
+    private Korisnik korisnikByKondukterKId;
+    private Kontroli kontroliByKontrolaId;
+    private Kaznazaneregistriran kaznazaneregistriranByKzId;
+    private Kaznazaregistriran kaznazaregistriranByKzId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "kz_id", nullable = false)
+    public Long getKzId() {
+        return kzId;
+    }
+
+    public void setKzId(Long kzId) {
+        this.kzId = kzId;
+    }
+
+    @Basic
+    @Column(name = "kz_iznos", nullable = false, precision = 0)
+    public Double getKzIznos() {
+        return kzIznos;
+    }
+
+    public void setKzIznos(Double kzIznos) {
+        this.kzIznos = kzIznos;
+    }
+
+    @Basic
+    @Column(name = "kz_plateno", nullable = false)
+    public Boolean getKzPlateno() {
+        return kzPlateno;
+    }
+
+    public void setKzPlateno(Boolean kzPlateno) {
+        this.kzPlateno = kzPlateno;
+    }
+
+    @Basic
+    @Column(name = "kz_datum", nullable = false)
+    public Timestamp getKzDatum() {
+        return kzDatum;
+    }
+
+    public void setKzDatum(Timestamp kzDatum) {
+        this.kzDatum = kzDatum;
+    }
+
+    @Basic
+    @Column(name = "kz_datum_plateno", nullable = true)
+    public Timestamp getKzDatumPlateno() {
+        return kzDatumPlateno;
+    }
+
+    public void setKzDatumPlateno(Timestamp kzDatumPlateno) {
+        this.kzDatumPlateno = kzDatumPlateno;
+    }
+
+    @Basic
+    @Column(name = "kz_dokument", nullable = false)
+    public String getKzDokument() {
+        return kzDokument;
+    }
+
+    public void setKzDokument(String kzDokument) {
+        this.kzDokument = kzDokument;
+    }
+
+    @Basic
+    @Column(name = "kondukter_k_id", nullable = true)
+    public Long getKondukterKId() {
+        return kondukterKId;
+    }
+
+    public void setKondukterKId(Long kondukterKId) {
+        this.kondukterKId = kondukterKId;
+    }
+
+    @Basic
+    @Column(name = "kontrola_id", nullable = true)
+    public Long getKontrolaId() {
+        return kontrolaId;
+    }
+
+    public void setKontrolaId(Long kontrolaId) {
+        this.kontrolaId = kontrolaId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Kazna kazna = (Kazna) o;
+        return Objects.equals(kzId, kazna.kzId) && Objects.equals(kzIznos, kazna.kzIznos) && Objects.equals(kzPlateno, kazna.kzPlateno) && Objects.equals(kzDatum, kazna.kzDatum) && Objects.equals(kzDatumPlateno, kazna.kzDatumPlateno) && Objects.equals(kzDokument, kazna.kzDokument) && Objects.equals(kondukterKId, kazna.kondukterKId) && Objects.equals(kontrolaId, kazna.kontrolaId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kzId, kzIznos, kzPlateno, kzDatum, kzDatumPlateno, kzDokument, kondukterKId, kontrolaId);
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "kondukter_k_id", referencedColumnName = "k_id")
+    public Korisnik getKorisnikByKondukterKId() {
+        return korisnikByKondukterKId;
+    }
+
+    public void setKorisnikByKondukterKId(Korisnik korisnikByKondukterKId) {
+        this.korisnikByKondukterKId = korisnikByKondukterKId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "kontrola_id", referencedColumnName = "kontrola_id")
+    public Kontroli getKontroliByKontrolaId() {
+        return kontroliByKontrolaId;
+    }
+
+    public void setKontroliByKontrolaId(Kontroli kontroliByKontrolaId) {
+        this.kontroliByKontrolaId = kontroliByKontrolaId;
+    }
+
+    @OneToOne(mappedBy = "kaznaByKzId")
+    public Kaznazaneregistriran getKaznazaneregistriranByKzId() {
+        return kaznazaneregistriranByKzId;
+    }
+
+    public void setKaznazaneregistriranByKzId(Kaznazaneregistriran kaznazaneregistriranByKzId) {
+        this.kaznazaneregistriranByKzId = kaznazaneregistriranByKzId;
+    }
+
+    @OneToOne(mappedBy = "kaznaByKzId")
+    public Kaznazaregistriran getKaznazaregistriranByKzId() {
+        return kaznazaregistriranByKzId;
+    }
+
+    public void setKaznazaregistriranByKzId(Kaznazaregistriran kaznazaregistriranByKzId) {
+        this.kaznazaregistriranByKzId = kaznazaregistriranByKzId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Kaznazaneregistriran.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Kaznazaneregistriran.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Kaznazaneregistriran.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,78 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Objects;
+
+@Entity
+public class Kaznazaneregistriran {
+    private Long kzId;
+    private Object kznTelefon;
+    private Object kznIme;
+    private Object kznAdresa;
+    private Kazna kaznaByKzId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "kz_id", nullable = false)
+    public Long getKzId() {
+        return kzId;
+    }
+
+    public void setKzId(Long kzId) {
+        this.kzId = kzId;
+    }
+
+    @Basic
+    @Column(name = "kzn_telefon", nullable = true)
+    public Object getKznTelefon() {
+        return kznTelefon;
+    }
+
+    public void setKznTelefon(Object kznTelefon) {
+        this.kznTelefon = kznTelefon;
+    }
+
+    @Basic
+    @Column(name = "kzn_ime", nullable = false)
+    public Object getKznIme() {
+        return kznIme;
+    }
+
+    public void setKznIme(Object kznIme) {
+        this.kznIme = kznIme;
+    }
+
+    @Basic
+    @Column(name = "kzn_adresa", nullable = false)
+    public Object getKznAdresa() {
+        return kznAdresa;
+    }
+
+    public void setKznAdresa(Object kznAdresa) {
+        this.kznAdresa = kznAdresa;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Kaznazaneregistriran that = (Kaznazaneregistriran) o;
+        return Objects.equals(kzId, that.kzId) && Objects.equals(kznTelefon, that.kznTelefon) && Objects.equals(kznIme, that.kznIme) && Objects.equals(kznAdresa, that.kznAdresa);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kzId, kznTelefon, kznIme, kznAdresa);
+    }
+
+    @OneToOne
+    @JoinColumn(name = "kz_id", referencedColumnName = "kz_id", nullable = false)
+    public Kazna getKaznaByKzId() {
+        return kaznaByKzId;
+    }
+
+    public void setKaznaByKzId(Kazna kaznaByKzId) {
+        this.kaznaByKzId = kaznaByKzId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Kaznazaregistriran.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Kaznazaregistriran.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Kaznazaregistriran.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,67 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Objects;
+
+@Entity
+public class Kaznazaregistriran {
+    private Long kzId;
+    private Long patnikKId;
+    private Kazna kaznaByKzId;
+    private Korisnik korisnikByPatnikKId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "kz_id", nullable = false)
+    public Long getKzId() {
+        return kzId;
+    }
+
+    public void setKzId(Long kzId) {
+        this.kzId = kzId;
+    }
+
+    @Basic
+    @Column(name = "patnik_k_id", nullable = true)
+    public Long getPatnikKId() {
+        return patnikKId;
+    }
+
+    public void setPatnikKId(Long patnikKId) {
+        this.patnikKId = patnikKId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Kaznazaregistriran that = (Kaznazaregistriran) o;
+        return Objects.equals(kzId, that.kzId) && Objects.equals(patnikKId, that.patnikKId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kzId, patnikKId);
+    }
+
+    @OneToOne
+    @JoinColumn(name = "kz_id", referencedColumnName = "kz_id", nullable = false)
+    public Kazna getKaznaByKzId() {
+        return kaznaByKzId;
+    }
+
+    public void setKaznaByKzId(Kazna kaznaByKzId) {
+        this.kaznaByKzId = kaznaByKzId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "patnik_k_id", referencedColumnName = "k_id")
+    public Korisnik getKorisnikByPatnikKId() {
+        return korisnikByPatnikKId;
+    }
+
+    public void setKorisnikByPatnikKId(Korisnik korisnikByPatnikKId) {
+        this.korisnikByPatnikKId = korisnikByPatnikKId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Kondukter.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Kondukter.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Kondukter.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,45 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Objects;
+
+@Entity
+public class Kondukter {
+    private Long kId;
+    private Korisnik korisnikByKId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "k_id", nullable = false)
+    public Long getkId() {
+        return kId;
+    }
+
+    public void setkId(Long kId) {
+        this.kId = kId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Kondukter kondukter = (Kondukter) o;
+        return Objects.equals(kId, kondukter.kId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kId);
+    }
+
+    @OneToOne
+    @JoinColumn(name = "k_id", referencedColumnName = "k_id", nullable = false)
+    public Korisnik getKorisnikByKId() {
+        return korisnikByKId;
+    }
+
+    public void setKorisnikByKId(Korisnik korisnikByKId) {
+        this.korisnikByKId = korisnikByKId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Kontroli.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Kontroli.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Kontroli.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,101 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.sql.Timestamp;
+import java.util.Collection;
+import java.util.Objects;
+
+@Entity
+public class Kontroli {
+    private Long kontrolaId;
+    private Timestamp kontrolaDatum;
+    private Long kondukterKId;
+    private Long inlId;
+    private Korisnik korisnikByKondukterKId;
+    private Instancanalinija instancanalinijaByInlId;
+    private Collection<Kazna> kaznasByKontrolaId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "kontrola_id", nullable = false)
+    public Long getKontrolaId() {
+        return kontrolaId;
+    }
+
+    public void setKontrolaId(Long kontrolaId) {
+        this.kontrolaId = kontrolaId;
+    }
+
+    @Basic
+    @Column(name = "kontrola_datum", nullable = false)
+    public Timestamp getKontrolaDatum() {
+        return kontrolaDatum;
+    }
+
+    public void setKontrolaDatum(Timestamp kontrolaDatum) {
+        this.kontrolaDatum = kontrolaDatum;
+    }
+
+    @Basic
+    @Column(name = "kondukter_k_id", nullable = true)
+    public Long getKondukterKId() {
+        return kondukterKId;
+    }
+
+    public void setKondukterKId(Long kondukterKId) {
+        this.kondukterKId = kondukterKId;
+    }
+
+    @Basic
+    @Column(name = "inl_id", nullable = true)
+    public Long getInlId() {
+        return inlId;
+    }
+
+    public void setInlId(Long inlId) {
+        this.inlId = inlId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Kontroli kontroli = (Kontroli) o;
+        return Objects.equals(kontrolaId, kontroli.kontrolaId) && Objects.equals(kontrolaDatum, kontroli.kontrolaDatum) && Objects.equals(kondukterKId, kontroli.kondukterKId) && Objects.equals(inlId, kontroli.inlId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kontrolaId, kontrolaDatum, kondukterKId, inlId);
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "kondukter_k_id", referencedColumnName = "k_id")
+    public Korisnik getKorisnikByKondukterKId() {
+        return korisnikByKondukterKId;
+    }
+
+    public void setKorisnikByKondukterKId(Korisnik korisnikByKondukterKId) {
+        this.korisnikByKondukterKId = korisnikByKondukterKId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "inl_id", referencedColumnName = "inl_id")
+    public Instancanalinija getInstancanalinijaByInlId() {
+        return instancanalinijaByInlId;
+    }
+
+    public void setInstancanalinijaByInlId(Instancanalinija instancanalinijaByInlId) {
+        this.instancanalinijaByInlId = instancanalinijaByInlId;
+    }
+
+    @OneToMany(mappedBy = "kontroliByKontrolaId")
+    public Collection<Kazna> getKaznasByKontrolaId() {
+        return kaznasByKontrolaId;
+    }
+
+    public void setKaznasByKontrolaId(Collection<Kazna> kaznasByKontrolaId) {
+        this.kaznasByKontrolaId = kaznasByKontrolaId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Korisnik.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Korisnik.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Korisnik.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,202 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Collection;
+import java.util.Objects;
+
+@Entity
+public class Korisnik {
+    private Long kId;
+    private String kIme;
+    private String kAdresa;
+    private String kTelefon;
+    private String kEmail;
+    private String kEmbg;
+    private Boolean kIsAdmin;
+    private String kLozinka;
+    private Patnik patnikByKId;
+    private Vraboten vrabotenByKId;
+    private Kondukter kondukterByKId;
+    private Vozac vozacByKId;
+    private Collection<Bilet> biletsByKId;
+    private Collection<Vozenje> vozenjesByKId;
+    private Collection<Kontroli> kontrolisByKId;
+    private Collection<Kazna> kaznasByKId;
+    private Collection<Kaznazaregistriran> kaznazaregistriransByKId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "k_id", nullable = false)
+    public Long getkId() {
+        return kId;
+    }
+
+    public void setkId(Long kId) {
+        this.kId = kId;
+    }
+
+    @Basic
+    @Column(name = "k_ime", nullable = false)
+    public String getkIme() {
+        return kIme;
+    }
+
+    public void setkIme(String kIme) {
+        this.kIme = kIme;
+    }
+
+    @Basic
+    @Column(name = "k_adresa", nullable = true)
+    public String getkAdresa() {
+        return kAdresa;
+    }
+
+    public void setkAdresa(String kAdresa) {
+        this.kAdresa = kAdresa;
+    }
+
+    @Basic
+    @Column(name = "k_telefon", nullable = false)
+    public String getkTelefon() {
+        return kTelefon;
+    }
+
+    public void setkTelefon(String kTelefon) {
+        this.kTelefon = kTelefon;
+    }
+
+    @Basic
+    @Column(name = "k_email", nullable = false)
+    public String getkEmail() {
+        return kEmail;
+    }
+
+    public void setkEmail(String kEmail) {
+        this.kEmail = kEmail;
+    }
+
+    @Basic
+    @Column(name = "k_embg", nullable = true, length = 13)
+    public String getkEmbg() {
+        return kEmbg;
+    }
+
+    public void setkEmbg(String kEmbg) {
+        this.kEmbg = kEmbg;
+    }
+
+    @Basic
+    @Column(name = "k_is_admin", nullable = false)
+    public Boolean getkIsAdmin() {
+        return kIsAdmin;
+    }
+
+    public void setkIsAdmin(Boolean kIsAdmin) {
+        this.kIsAdmin = kIsAdmin;
+    }
+
+    @Basic
+    @Column(name = "k_lozinka", nullable = false)
+    public String getkLozinka() {
+        return kLozinka;
+    }
+
+    public void setkLozinka(String kLozinka) {
+        this.kLozinka = kLozinka;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Korisnik korisnik = (Korisnik) o;
+        return Objects.equals(kId, korisnik.kId) && Objects.equals(kIme, korisnik.kIme) && Objects.equals(kAdresa, korisnik.kAdresa) && Objects.equals(kTelefon, korisnik.kTelefon) && Objects.equals(kEmail, korisnik.kEmail) && Objects.equals(kEmbg, korisnik.kEmbg) && Objects.equals(kIsAdmin, korisnik.kIsAdmin) && Objects.equals(kLozinka, korisnik.kLozinka);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kId, kIme, kAdresa, kTelefon, kEmail, kEmbg, kIsAdmin, kLozinka);
+    }
+
+    @OneToOne(mappedBy = "korisnikByKId")
+    public Patnik getPatnikByKId() {
+        return patnikByKId;
+    }
+
+    public void setPatnikByKId(Patnik patnikByKId) {
+        this.patnikByKId = patnikByKId;
+    }
+
+    @OneToOne(mappedBy = "korisnikByKId")
+    public Vraboten getVrabotenByKId() {
+        return vrabotenByKId;
+    }
+
+    public void setVrabotenByKId(Vraboten vrabotenByKId) {
+        this.vrabotenByKId = vrabotenByKId;
+    }
+
+    @OneToOne(mappedBy = "korisnikByKId")
+    public Kondukter getKondukterByKId() {
+        return kondukterByKId;
+    }
+
+    public void setKondukterByKId(Kondukter kondukterByKId) {
+        this.kondukterByKId = kondukterByKId;
+    }
+
+    @OneToOne(mappedBy = "korisnikByKId")
+    public Vozac getVozacByKId() {
+        return vozacByKId;
+    }
+
+    public void setVozacByKId(Vozac vozacByKId) {
+        this.vozacByKId = vozacByKId;
+    }
+
+    @OneToMany(mappedBy = "korisnikByPatnikKId")
+    public Collection<Bilet> getBiletsByKId() {
+        return biletsByKId;
+    }
+
+    public void setBiletsByKId(Collection<Bilet> biletsByKId) {
+        this.biletsByKId = biletsByKId;
+    }
+
+    @OneToMany(mappedBy = "korisnikByPatnikKId")
+    public Collection<Vozenje> getVozenjesByKId() {
+        return vozenjesByKId;
+    }
+
+    public void setVozenjesByKId(Collection<Vozenje> vozenjesByKId) {
+        this.vozenjesByKId = vozenjesByKId;
+    }
+
+    @OneToMany(mappedBy = "korisnikByKondukterKId")
+    public Collection<Kontroli> getKontrolisByKId() {
+        return kontrolisByKId;
+    }
+
+    public void setKontrolisByKId(Collection<Kontroli> kontrolisByKId) {
+        this.kontrolisByKId = kontrolisByKId;
+    }
+
+    @OneToMany(mappedBy = "korisnikByKondukterKId")
+    public Collection<Kazna> getKaznasByKId() {
+        return kaznasByKId;
+    }
+
+    public void setKaznasByKId(Collection<Kazna> kaznasByKId) {
+        this.kaznasByKId = kaznasByKId;
+    }
+
+    @OneToMany(mappedBy = "korisnikByPatnikKId")
+    public Collection<Kaznazaregistriran> getKaznazaregistriransByKId() {
+        return kaznazaregistriransByKId;
+    }
+
+    public void setKaznazaregistriransByKId(Collection<Kaznazaregistriran> kaznazaregistriransByKId) {
+        this.kaznazaregistriransByKId = kaznazaregistriransByKId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Linija.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Linija.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Linija.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,78 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+
+@Entity
+public class Linija {
+    private Integer liId;
+    private String liIme;
+    private String liPravec;
+    private List<Postojkanalinija> postojkanalinijasByLiId;
+    private List<Instancanalinija> instancanalinijasByLiId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "li_id", nullable = false)
+    public Integer getLiId() {
+        return liId;
+    }
+
+    public void setLiId(Integer liId) {
+        this.liId = liId;
+    }
+
+    @Basic
+    @Column(name = "li_ime", nullable = false)
+    public String getLiIme() {
+        return liIme;
+    }
+
+    public void setLiIme(String liIme) {
+        this.liIme = liIme;
+    }
+
+    @Basic
+    @Column(name = "li_pravec", nullable = false)
+    public String getLiPravec() {
+        return liPravec;
+    }
+
+    public void setLiPravec(String liPravec) {
+        this.liPravec = liPravec;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Linija linija = (Linija) o;
+        return Objects.equals(liId, linija.liId) && Objects.equals(liIme, linija.liIme) && Objects.equals(liPravec, linija.liPravec);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(liId, liIme, liPravec);
+    }
+
+    @OneToMany(mappedBy = "linijaByLiId")
+    public List<Postojkanalinija> getPostojkanalinijasByLiId() {
+        return postojkanalinijasByLiId;
+    }
+
+    public void setPostojkanalinijasByLiId(List<Postojkanalinija> postojkanalinijasByLiId) {
+        this.postojkanalinijasByLiId = postojkanalinijasByLiId;
+    }
+
+    @OneToMany(mappedBy = "linijaByLiId")
+    public List<Instancanalinija> getInstancanalinijasByLiId() {
+        return instancanalinijasByLiId;
+    }
+
+    public void setInstancanalinijasByLiId(List<Instancanalinija> instancanalinijasByLiId) {
+        this.instancanalinijasByLiId = instancanalinijasByLiId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Mesto.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Mesto.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Mesto.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,79 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+
+@Entity
+public class Mesto {
+    private Integer mId;
+    private String mGrad;
+    private String mOpstina;
+    private String mUlica;
+    private List<Postojka> postojkasByMId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "m_id", nullable = false)
+    public Integer getmId() {
+        return mId;
+    }
+
+    public void setmId(Integer mId) {
+        this.mId = mId;
+    }
+
+    @Basic
+    @Column(name = "m_grad", nullable = false)
+    public String getmGrad() {
+        return mGrad;
+    }
+
+    public void setmGrad(String mGrad) {
+        this.mGrad = mGrad;
+    }
+
+    @Basic
+    @Column(name = "m_opstina", nullable = false)
+    public String getmOpstina() {
+        return mOpstina;
+    }
+
+    public void setmOpstina(String mOpstina) {
+        this.mOpstina = mOpstina;
+    }
+
+    @Basic
+    @Column(name = "m_ulica", nullable = false)
+    public String getmUlica() {
+        return mUlica;
+    }
+
+    public void setmUlica(String mUlica) {
+        this.mUlica = mUlica;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Mesto mesto = (Mesto) o;
+        return Objects.equals(mId, mesto.mId) && Objects.equals(mGrad, mesto.mGrad) && Objects.equals(mOpstina, mesto.mOpstina) && Objects.equals(mUlica, mesto.mUlica);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mId, mGrad, mOpstina, mUlica);
+    }
+
+    @OneToMany(mappedBy = "mestoByMId")
+    public List<Postojka> getPostojkasByMId() {
+        return postojkasByMId;
+    }
+
+    public void setPostojkasByMId(List<Postojka> postojkasByMId) {
+        this.postojkasByMId = postojkasByMId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Patnik.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Patnik.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Patnik.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,45 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Objects;
+
+@Entity
+public class Patnik {
+    private Long kId;
+    private Korisnik korisnikByKId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "k_id", nullable = false)
+    public Long getkId() {
+        return kId;
+    }
+
+    public void setkId(Long kId) {
+        this.kId = kId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Patnik patnik = (Patnik) o;
+        return Objects.equals(kId, patnik.kId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kId);
+    }
+
+    @OneToOne
+    @JoinColumn(name = "k_id", referencedColumnName = "k_id", nullable = false)
+    public Korisnik getKorisnikByKId() {
+        return korisnikByKId;
+    }
+
+    public void setKorisnikByKId(Korisnik korisnikByKId) {
+        this.korisnikByKId = korisnikByKId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Postojka.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Postojka.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Postojka.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,79 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+
+@Entity
+public class Postojka {
+    private Integer pId;
+    private String pIme;
+    private Integer mId;
+    private Mesto mestoByMId;
+    private List<Postojkanalinija> postojkanalinijasByPId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "p_id", nullable = false)
+    public Integer getpId() {
+        return pId;
+    }
+
+    public void setpId(Integer pId) {
+        this.pId = pId;
+    }
+
+    @Basic
+    @Column(name = "p_ime", nullable = false)
+    public String getpIme() {
+        return pIme;
+    }
+
+    public void setpIme(String pIme) {
+        this.pIme = pIme;
+    }
+
+    @Basic
+    @Column(name = "m_id", nullable = true)
+    public Integer getmId() {
+        return mId;
+    }
+
+    public void setmId(Integer mId) {
+        this.mId = mId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Postojka postojka = (Postojka) o;
+        return Objects.equals(pId, postojka.pId) && Objects.equals(pIme, postojka.pIme) && Objects.equals(mId, postojka.mId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(pId, pIme, mId);
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "m_id", referencedColumnName = "m_id")
+    public Mesto getMestoByMId() {
+        return mestoByMId;
+    }
+
+    public void setMestoByMId(Mesto mestoByMId) {
+        this.mestoByMId = mestoByMId;
+    }
+
+    @OneToMany(mappedBy = "postojkaByPId")
+    public List<Postojkanalinija> getPostojkanalinijasByPId() {
+        return postojkanalinijasByPId;
+    }
+
+    public void setPostojkanalinijasByPId(List<Postojkanalinija> postojkanalinijasByPId) {
+        this.postojkanalinijasByPId = postojkanalinijasByPId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Postojkanalinija.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Postojkanalinija.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Postojkanalinija.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,100 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Collection;
+import java.util.Objects;
+
+@Entity
+public class Postojkanalinija {
+    private Long pnlId;
+    private Short pnlRedenBroj;
+    private Integer liId;
+    private Integer pId;
+    private Linija linijaByLiId;
+    private Postojka postojkaByPId;
+    private Collection<Vozenje> vozenjesByPnlId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "pnl_id", nullable = false)
+    public Long getPnlId() {
+        return pnlId;
+    }
+
+    public void setPnlId(Long pnlId) {
+        this.pnlId = pnlId;
+    }
+
+    @Basic
+    @Column(name = "pnl_reden_broj", nullable = false)
+    public Short getPnlRedenBroj() {
+        return pnlRedenBroj;
+    }
+
+    public void setPnlRedenBroj(Short pnlRedenBroj) {
+        this.pnlRedenBroj = pnlRedenBroj;
+    }
+
+    @Basic
+    @Column(name = "li_id", nullable = false)
+    public Integer getLiId() {
+        return liId;
+    }
+
+    public void setLiId(Integer liId) {
+        this.liId = liId;
+    }
+
+    @Basic
+    @Column(name = "p_id", nullable = false)
+    public Integer getpId() {
+        return pId;
+    }
+
+    public void setpId(Integer pId) {
+        this.pId = pId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Postojkanalinija that = (Postojkanalinija) o;
+        return Objects.equals(pnlId, that.pnlId) && Objects.equals(pnlRedenBroj, that.pnlRedenBroj) && Objects.equals(liId, that.liId) && Objects.equals(pId, that.pId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(pnlId, pnlRedenBroj, liId, pId);
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "li_id", referencedColumnName = "li_id", nullable = false)
+    public Linija getLinijaByLiId() {
+        return linijaByLiId;
+    }
+
+    public void setLinijaByLiId(Linija linijaByLiId) {
+        this.linijaByLiId = linijaByLiId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "p_id", referencedColumnName = "p_id", nullable = false)
+    public Postojka getPostojkaByPId() {
+        return postojkaByPId;
+    }
+
+    public void setPostojkaByPId(Postojka postojkaByPId) {
+        this.postojkaByPId = postojkaByPId;
+    }
+
+    @OneToMany(mappedBy = "postojkanalinijaByKacuvaPnlId")
+    public Collection<Vozenje> getVozenjesByPnlId() {
+        return vozenjesByPnlId;
+    }
+
+    public void setVozenjesByPnlId(Collection<Vozenje> vozenjesByPnlId) {
+        this.vozenjesByPnlId = vozenjesByPnlId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/SeSimnuvaNa.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/SeSimnuvaNa.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/SeSimnuvaNa.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,52 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+
+import java.util.Objects;
+
+@Entity
+@jakarta.persistence.Table(name = "se_simnuva_na", schema = "project", catalog = "db_202324z_va_prj_busngo")
+@jakarta.persistence.IdClass(mk.ukim.finki.busngo.model.SeSimnuvaNaPK.class)
+public class SeSimnuvaNa {
+    private Long pnlId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @jakarta.persistence.Column(name = "pnl_id", nullable = false)
+    public Long getPnlId() {
+        return pnlId;
+    }
+
+    public void setPnlId(Long pnlId) {
+        this.pnlId = pnlId;
+    }
+
+    private Long vozenjeId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @jakarta.persistence.Column(name = "vozenje_id", nullable = false)
+    public Long getVozenjeId() {
+        return vozenjeId;
+    }
+
+    public void setVozenjeId(Long vozenjeId) {
+        this.vozenjeId = vozenjeId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        SeSimnuvaNa that = (SeSimnuvaNa) o;
+        return Objects.equals(pnlId, that.pnlId) && Objects.equals(vozenjeId, that.vozenjeId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(pnlId, vozenjeId);
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/SeSimnuvaNaPK.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/SeSimnuvaNaPK.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/SeSimnuvaNaPK.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,6 @@
+package mk.ukim.finki.busngo.model;
+
+import java.io.Serializable;
+
+public class SeSimnuvaNaPK implements Serializable {
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Tipbilet.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Tipbilet.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Tipbilet.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,67 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Collection;
+import java.util.Objects;
+
+@Entity
+public class Tipbilet {
+    private Integer tbId;
+    private Long tbTrajnost;
+    private String tbIme;
+    private Collection<Bilet> biletsByTbId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "tb_id", nullable = false)
+    public Integer getTbId() {
+        return tbId;
+    }
+
+    public void setTbId(Integer tbId) {
+        this.tbId = tbId;
+    }
+
+    @Basic
+    @Column(name = "tb_trajnost", nullable = false)
+    public Long getTbTrajnost() {
+        return tbTrajnost;
+    }
+
+    public void setTbTrajnost(Long tbTrajnost) {
+        this.tbTrajnost = tbTrajnost;
+    }
+
+    @Basic
+    @Column(name = "tb_ime", nullable = false)
+    public String getTbIme() {
+        return tbIme;
+    }
+
+    public void setTbIme(String tbIme) {
+        this.tbIme = tbIme;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Tipbilet tipbilet = (Tipbilet) o;
+        return Objects.equals(tbId, tipbilet.tbId) && Objects.equals(tbTrajnost, tipbilet.tbTrajnost) && Objects.equals(tbIme, tipbilet.tbIme);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(tbId, tbTrajnost, tbIme);
+    }
+
+    @OneToMany(mappedBy = "tipbiletByTbId")
+    public Collection<Bilet> getBiletsByTbId() {
+        return biletsByTbId;
+    }
+
+    public void setBiletsByTbId(Collection<Bilet> biletsByTbId) {
+        this.biletsByTbId = biletsByTbId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Vozac.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Vozac.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Vozac.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,45 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.util.Objects;
+
+@Entity
+public class Vozac {
+    private Long kId;
+    private Korisnik korisnikByKId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "k_id", nullable = false)
+    public Long getkId() {
+        return kId;
+    }
+
+    public void setkId(Long kId) {
+        this.kId = kId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Vozac vozac = (Vozac) o;
+        return Objects.equals(kId, vozac.kId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kId);
+    }
+
+    @OneToOne
+    @JoinColumn(name = "k_id", referencedColumnName = "k_id", nullable = false)
+    public Korisnik getKorisnikByKId() {
+        return korisnikByKId;
+    }
+
+    public void setKorisnikByKId(Korisnik korisnikByKId) {
+        this.korisnikByKId = korisnikByKId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Vozenje.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Vozenje.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Vozenje.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,158 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+import mk.ukim.finki.busngo.model.enums.VOZENJE_STATUS;
+
+import java.sql.Timestamp;
+import java.util.Objects;
+
+@Entity
+public class Vozenje {
+    private Long vozenjeId;
+    private Timestamp vozenjeStart;
+    private Timestamp vozenjeEnd;
+    private VOZENJE_STATUS vozenjeStatus;
+    private Long patnikKId;
+    private Long kacuvaPnlId;
+    private Long inlId;
+    private Long bId;
+    private Korisnik korisnikByPatnikKId;
+    private Postojkanalinija postojkanalinijaByKacuvaPnlId;
+    private Instancanalinija instancanalinijaByInlId;
+    private Bilet biletByBId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "vozenje_id", nullable = false)
+    public Long getVozenjeId() {
+        return vozenjeId;
+    }
+
+    public void setVozenjeId(Long vozenjeId) {
+        this.vozenjeId = vozenjeId;
+    }
+
+    @Basic
+    @Column(name = "vozenje_start", nullable = false)
+    public Timestamp getVozenjeStart() {
+        return vozenjeStart;
+    }
+
+    public void setVozenjeStart(Timestamp vozenjeStart) {
+        this.vozenjeStart = vozenjeStart;
+    }
+
+    @Basic
+    @Column(name = "vozenje_end", nullable = true)
+    public Timestamp getVozenjeEnd() {
+        return vozenjeEnd;
+    }
+
+    public void setVozenjeEnd(Timestamp vozenjeEnd) {
+        this.vozenjeEnd = vozenjeEnd;
+    }
+
+    @Basic
+    @Column(name = "vozenje_status", nullable = false)
+    @Enumerated(EnumType.STRING)
+    public VOZENJE_STATUS getVozenjeStatus() {
+        return vozenjeStatus;
+    }
+
+    public void setVozenjeStatus(VOZENJE_STATUS vozenjeStatus) {
+        this.vozenjeStatus = vozenjeStatus;
+    }
+
+    @Basic
+    @Column(name = "patnik_k_id", nullable = true)
+    public Long getPatnikKId() {
+        return patnikKId;
+    }
+
+    public void setPatnikKId(Long patnikKId) {
+        this.patnikKId = patnikKId;
+    }
+
+    @Basic
+    @Column(name = "kacuva_pnl_id", nullable = false)
+    public Long getKacuvaPnlId() {
+        return kacuvaPnlId;
+    }
+
+    public void setKacuvaPnlId(Long kacuvaPnlId) {
+        this.kacuvaPnlId = kacuvaPnlId;
+    }
+
+    @Basic
+    @Column(name = "inl_id", nullable = false)
+    public Long getInlId() {
+        return inlId;
+    }
+
+    public void setInlId(Long inlId) {
+        this.inlId = inlId;
+    }
+
+    @Basic
+    @Column(name = "b_id", nullable = false)
+    public Long getbId() {
+        return bId;
+    }
+
+    public void setbId(Long bId) {
+        this.bId = bId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Vozenje vozenje = (Vozenje) o;
+        return Objects.equals(vozenjeId, vozenje.vozenjeId) && Objects.equals(vozenjeStart, vozenje.vozenjeStart) && Objects.equals(vozenjeEnd, vozenje.vozenjeEnd) && Objects.equals(vozenjeStatus, vozenje.vozenjeStatus) && Objects.equals(patnikKId, vozenje.patnikKId) && Objects.equals(kacuvaPnlId, vozenje.kacuvaPnlId) && Objects.equals(inlId, vozenje.inlId) && Objects.equals(bId, vozenje.bId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(vozenjeId, vozenjeStart, vozenjeEnd, vozenjeStatus, patnikKId, kacuvaPnlId, inlId, bId);
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "patnik_k_id", referencedColumnName = "k_id")
+    public Korisnik getKorisnikByPatnikKId() {
+        return korisnikByPatnikKId;
+    }
+
+    public void setKorisnikByPatnikKId(Korisnik korisnikByPatnikKId) {
+        this.korisnikByPatnikKId = korisnikByPatnikKId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "kacuva_pnl_id", referencedColumnName = "pnl_id", nullable = false)
+    public Postojkanalinija getPostojkanalinijaByKacuvaPnlId() {
+        return postojkanalinijaByKacuvaPnlId;
+    }
+
+    public void setPostojkanalinijaByKacuvaPnlId(Postojkanalinija postojkanalinijaByKacuvaPnlId) {
+        this.postojkanalinijaByKacuvaPnlId = postojkanalinijaByKacuvaPnlId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "inl_id", referencedColumnName = "inl_id", nullable = false)
+    public Instancanalinija getInstancanalinijaByInlId() {
+        return instancanalinijaByInlId;
+    }
+
+    public void setInstancanalinijaByInlId(Instancanalinija instancanalinijaByInlId) {
+        this.instancanalinijaByInlId = instancanalinijaByInlId;
+    }
+
+    @ManyToOne
+    @JoinColumn(name = "b_id", referencedColumnName = "b_id", nullable = false)
+    public Bilet getBiletByBId() {
+        return biletByBId;
+    }
+
+    public void setBiletByBId(Bilet biletByBId) {
+        this.biletByBId = biletByBId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/Vraboten.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/Vraboten.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/Vraboten.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,79 @@
+package mk.ukim.finki.busngo.model;
+
+import jakarta.persistence.*;
+
+import java.sql.Date;
+import java.util.Objects;
+
+@Entity
+public class Vraboten{
+    private Long kId;
+    private Double vPlata;
+    private Date vDatumNaVrabotuvanje;
+    private Date vDatumPrekinVrabotuvanje;
+    private Korisnik korisnikByKId;
+
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Id
+    @Column(name = "k_id", nullable = false)
+    public Long getkId() {
+        return kId;
+    }
+
+    public void setkId(Long kId) {
+        this.kId = kId;
+    }
+
+    @Basic
+    @Column(name = "v_plata", nullable = false, precision = 0)
+    public Double getvPlata() {
+        return vPlata;
+    }
+
+    public void setvPlata(Double vPlata) {
+        this.vPlata = vPlata;
+    }
+
+    @Basic
+    @Column(name = "v_datum_na_vrabotuvanje", nullable = false)
+    public Date getvDatumNaVrabotuvanje() {
+        return vDatumNaVrabotuvanje;
+    }
+
+    public void setvDatumNaVrabotuvanje(Date vDatumNaVrabotuvanje) {
+        this.vDatumNaVrabotuvanje = vDatumNaVrabotuvanje;
+    }
+
+    @Basic
+    @Column(name = "v_datum_prekin_vrabotuvanje", nullable = true)
+    public Date getvDatumPrekinVrabotuvanje() {
+        return vDatumPrekinVrabotuvanje;
+    }
+
+    public void setvDatumPrekinVrabotuvanje(Date vDatumPrekinVrabotuvanje) {
+        this.vDatumPrekinVrabotuvanje = vDatumPrekinVrabotuvanje;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Vraboten vraboten = (Vraboten) o;
+        return Objects.equals(kId, vraboten.kId) && Objects.equals(vPlata, vraboten.vPlata) && Objects.equals(vDatumNaVrabotuvanje, vraboten.vDatumNaVrabotuvanje) && Objects.equals(vDatumPrekinVrabotuvanje, vraboten.vDatumPrekinVrabotuvanje);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(kId, vPlata, vDatumNaVrabotuvanje, vDatumPrekinVrabotuvanje);
+    }
+
+    @OneToOne
+    @JoinColumn(name = "k_id", referencedColumnName = "k_id", nullable = false)
+    public Korisnik getKorisnikByKId() {
+        return korisnikByKId;
+    }
+
+    public void setKorisnikByKId(Korisnik korisnikByKId) {
+        this.korisnikByKId = korisnikByKId;
+    }
+}
Index: src/main/java/mk/ukim/finki/busngo/model/enums/BILET_STATUS.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/enums/BILET_STATUS.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/enums/BILET_STATUS.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,7 @@
+package mk.ukim.finki.busngo.model.enums;
+
+public enum BILET_STATUS {
+    INACTIVE,
+    ACTIVE,
+    EXPIRED
+}
Index: src/main/java/mk/ukim/finki/busngo/model/enums/VOZENJE_STATUS.java
===================================================================
--- src/main/java/mk/ukim/finki/busngo/model/enums/VOZENJE_STATUS.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/java/mk/ukim/finki/busngo/model/enums/VOZENJE_STATUS.java	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,6 @@
+package mk.ukim.finki.busngo.model.enums;
+
+public enum VOZENJE_STATUS {
+    ACTIVE,
+    FINISHED
+}
Index: src/main/resources/application.properties
===================================================================
--- src/main/resources/application.properties	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
+++ src/main/resources/application.properties	(revision 24c39f958d6dc4a916ce04381e57b26a8163a342)
@@ -0,0 +1,11 @@
+
+spring.datasource.url=jdbc:postgresql://localhost:5432/db_202324z_va_prj_busngo
+
+spring.datasource.hikari.connection-timeout=20000
+spring.datasource.hikari.maximum-pool-size=5
+
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
+spring.jpa.properties.hibernate.jdbc.non_contextual_creation=true
+
+spring.jpa.hibernate.ddl-auto=validate
+spring.jpa.show-sql=true
