Spring, как поместить данные в таблицу базы данных со многими ко многим ассоциациям - PullRequest
0 голосов
/ 15 октября 2019

Какой самый лучший способ вставить данные в третью таблицу. У меня есть база данных на postgres и три таблицы: User, Kategorija и KorisnikKategorija. Korisnikkategorija - это таблица с двумя внешними ключами пользователя и категории. Я хочу с весны, чтобы вставить данные в эту таблицу. Какой самый лучший способ? Должен ли я использовать сообщение, положить, запрос со вставкой? Я сделал интерфейсы и RestControllers. У меня есть пользователь и категория, и я хочу, чтобы пользователь мог следить за категорией. Я хочу добавить категорию в список в User.

package Diplomski.model;

import java.io.Serializable;
import javax.persistence.*;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import Diplomski.jpa.Flashcard;
import Diplomski.jpa.Kategorija;

import java.util.List;


/**
 * The persistent class for the korisnik database table.
 * 
 */
@Entity
@Table(name = "korisnik", uniqueConstraints = {
        @UniqueConstraint(columnNames = {
            "username"
        }),
        @UniqueConstraint(columnNames = {
            "email"
        })
})
@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})

public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="user_id_generator")
    @SequenceGenerator(name="user_id_generator", sequenceName = "kor_seq")      private Long id;

    private String email;

    private String ime;

    private String password;

    private String prezime;

    private String username;

    //bi-directional many-to-one association to Flashcard
    @OneToMany(mappedBy="korisnik")
    @JsonIgnore
    private List<Flashcard> flashcards;

    //bi-directional many-to-many association to Kategorija
    @ManyToMany
    @JoinTable(
        name="korisnikkategorija"
        , joinColumns={
            @JoinColumn(name="idkorisnika")
            }
        , inverseJoinColumns={
            @JoinColumn(name="idkategorije")
            }
        )
    private List<Kategorija> kategorijas;


    public User() {
    }

    public User(String name, String prezime, String username, String email, String password) {
        this.ime = name;
        this.prezime = prezime;
        this.username = username;
        this.email = email;
        this.password = password;
    }






    public User(Long id, List<Kategorija> kategorijas) {
        super();
        this.id = id;
        this.kategorijas = kategorijas;
    }



    public Long getId() {
        return this.id;
    }

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

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getIme() {
        return this.ime;
    }

    public void setIme(String ime) {
        this.ime = ime;
    }

    public String getPassword() {
        return this.password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getPrezime() {
        return this.prezime;
    }

    public void setPrezime(String prezime) {
        this.prezime = prezime;
    }

    public String getUsername() {
        return this.username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public List<Flashcard> getFlashcards() {
        return this.flashcards;
    }

    public void setFlashcards(List<Flashcard> flashcards) {
        this.flashcards = flashcards;
    }

    public Flashcard addFlashcard(Flashcard flashcard) {
        getFlashcards().add(flashcard);
        flashcard.setKorisnik(this);

        return flashcard;
    }

    public Flashcard removeFlashcard(Flashcard flashcard) {
        getFlashcards().remove(flashcard);
        flashcard.setKorisnik(null);

        return flashcard;
    }

    public List<Kategorija> getKategorijas() {
        return this.kategorijas;
    }

    public void setKategorijas(List<Kategorija> kategorijas) {
        this.kategorijas = kategorijas;
    }

}
package Diplomski.jpa;

import java.io.Serializable;
import javax.persistence.*;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import Diplomski.model.User;

import java.util.List;


/**
 * The persistent class for the kategorija database table.
 * 
 */
@Entity
@NamedQuery(name="Kategorija.findAll", query="SELECT k FROM Kategorija k")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class Kategorija implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    private String naziv;

    //bi-directional many-to-one association to Flashcard
    @OneToMany(mappedBy="kategorijaBean")
    @JsonIgnore
    private List<Flashcard> flashcards;

    //bi-directional many-to-one association to Kategorija
    @ManyToOne
    @JoinColumn(name="potkategorija")
    @JsonIgnore
    private Kategorija kategorija;

    //bi-directional many-to-one association to Kategorija
    @OneToMany(mappedBy="kategorija")
    @JsonIgnore
    private List<Kategorija> kategorijas;

    //bi-directional many-to-many association to User
    @ManyToMany(mappedBy="kategorijas")
    @JsonIgnore
    private List<User> korisniks;

    public Kategorija() {
    }




    public Kategorija(Integer id, String naziv, List<Flashcard> flashcards, Kategorija kategorija,
            List<Kategorija> kategorijas, List<User> korisniks) {
        super();
        this.id = id;
        this.naziv = naziv;
        this.flashcards = flashcards;
        this.kategorija = kategorija;
        this.kategorijas = kategorijas;
        this.korisniks = korisniks;
    }


    public Kategorija(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return this.id;
    }

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

    public String getNaziv() {
        return this.naziv;
    }

    public void setNaziv(String naziv) {
        this.naziv = naziv;
    }

    public List<Flashcard> getFlashcards() {
        return this.flashcards;
    }

    public void setFlashcards(List<Flashcard> flashcards) {
        this.flashcards = flashcards;
    }

    public Flashcard addFlashcard(Flashcard flashcard) {
        getFlashcards().add(flashcard);
        flashcard.setKategorijaBean(this);

        return flashcard;
    }

    public Flashcard removeFlashcard(Flashcard flashcard) {
        getFlashcards().remove(flashcard);
        flashcard.setKategorijaBean(null);

        return flashcard;
    }

    public Kategorija getKategorija() {
        return this.kategorija;
    }

    public void setKategorija(Kategorija kategorija) {
        this.kategorija = kategorija;
    }

    public List<Kategorija> getKategorijas() {
        return this.kategorijas;
    }

    public void setKategorijas(List<Kategorija> kategorijas) {
        this.kategorijas = kategorijas;
    }

    public Kategorija addKategorija(Kategorija kategorija) {
        getKategorijas().add(kategorija);
        kategorija.setKategorija(this);

        return kategorija;
    }

    public Kategorija removeKategorija(Kategorija kategorija) {
        getKategorijas().remove(kategorija);
        kategorija.setKategorija(null);

        return kategorija;
    }

    public List<User> getKorisniks() {
        return this.korisniks;
    }

    public void setKorisniks(List<User> korisniks) {
        this.korisniks = korisniks;
    }

}
...