Двунаправленное отношение «многие ко многим» пустое объединение - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь установить двунаправленное отношение «многие ко многим» между Eventi и Followers, прочитав документацию, я узнал, что если я не сохраню оба объекта сущностей Eventi и Followers, таблица соединения не будет заполнена ...

На странице jsp я хочу выбрать несколько Eventi при добавлении нового подписчика

То, что я хочу, это выбрать несколько Eventi при создании нового Подписчика, но таблица объединения пуста. Извините, но я совершенно новичок в Hibernate и Spring MVC

Модель Eventi

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;

@Column(name = "descrizione")
private String descrizione;

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "ev_foll", joinColumns = {
    @JoinColumn(name = "idEvento", referencedColumnName = "id")}, inverseJoinColumns = {
    @JoinColumn(name = "idFollower", referencedColumnName = "id")
})
private Collection<Followers> followersCollection;

public void setFollowersCollection(Collection<Followers> followersCollection) {
    this.followersCollection = followersCollection;
}

public Collection<Followers> getFollowersCollection() {
    return followersCollection;
}

@JoinColumn(name = "idCat", referencedColumnName = "id")
@ManyToOne(fetch = FetchType.EAGER)
private Categorie idCat;

public Eventi() {
}

public Eventi(int id, String descrizione, Collection<Followers> followersCollection, Categorie idCat) {
    this.id = id;
    this.descrizione = descrizione;
    this.followersCollection = followersCollection;
    this.idCat = idCat;
}

public int getId() {
    return id;
}

public String getDescrizione() {
    return descrizione;
}

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

public void setDescrizione(String descrizione) {
    this.descrizione = descrizione;
}

public Categorie getIdCat() {
    return idCat;
}

public void setIdCat(Categorie idCat) {
    this.idCat = idCat;
}

Модель последователя

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;

@Column(name = "email")
private String email;

@Column(name = "password")
private String password;

@ManyToMany(mappedBy = "followersCollection", fetch = FetchType.LAZY, cascade = {CascadeType.ALL, CascadeType.PERSIST})
private Collection<Eventi> eventiCollection = new ArrayList<>();

public Followers() {
}

public Followers(int id, String email, String password, Collection<Eventi> eventiCollection) {
    this.id = id;
    this.email = email;
    this.password = password;
    this.eventiCollection = eventiCollection;
}

public String getEmail() {
    return email;
}

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

public static long getSerialVersionUID() {
    return serialVersionUID;
}

public int getId() {
    return id;
}

public String getPassword() {
    return password;
}

public Collection<Eventi> getEventiCollection() {
    return eventiCollection;
}

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

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

public void setEventiCollection(Collection<Eventi> eventiCollection) {
    this.eventiCollection = eventiCollection;
}

FollowersDaoImpl.java

@Autowired
private SessionFactory sessionFactory;

@Autowired
private Eventi eventi;

protected Session getSession() {
    return sessionFactory.getCurrentSession();
}

@Override
public Followers findById(int id) {
    return (Followers) getSession().get(Followers.class, id);
}

@Transactional
@Override
public void saveFollowers(Followers followers)
    getSession().persist(followers);

}

@Override
public void deleteFollowers(int id) {
    Followers f = (Followers) getSession().load(Followers.class, id);
    if (f != null) {
        getSession().delete(f);
    }
}

@SuppressWarnings("unchecked")
@Override
public List<Followers> findAllFollowers() {
    Criteria criteria = getSession().createCriteria(Followers.class);
    return (List<Followers>) criteria.list();
}

public List<Eventi> findAllEventi(){
    Criteria criteria = getSession().createCriteria(Eventi.class);
    return (List<Eventi>) criteria.list();
}

AppController

@RequestMapping(value = "/followers/add", method = RequestMethod.GET)
public String newFollowers(ModelMap model) {
    Followers followers = new Followers();
    List<Eventi> eventi = eventiService.findAllEventi();
    model.addAttribute("tutti", eventi);
    model.addAttribute("followers", followers);
    this.followersService.saveFollowers(followers);
    return "followers/add";
}

@RequestMapping(value = "/followers/add", method = RequestMethod.POST)
public String addFollowers(@ModelAttribute("followers") Followers f) {
    if (f.getId() == 0) {
        this.followersService.saveFollowers(f);
    } else {
        this.followersService.updateFollowers(f);
    }

    return "redirect:/followers/";

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...