Reputation: 11
Entity
package com.java.scuola.model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Entity
@Table(name = "Docenti")
public class Docenti {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long id;
public Docenti(String string) {
}
@NotNull
@Size(min=4, max=45)
private String nome;
@NotNull
@Size(min=4, max=45)
private String cognome;
@NotNull
@Size(min=4, max=45)
private String email;
@NotNull
@Size(min=4, max=45)
private String password;
//collego a cascata
@OneToMany(mappedBy = "docente", cascade = CascadeType.ALL)
private Set<Modulidocenti> modulidocente = new HashSet<>();
public Docenti() {
}
public Docenti(Long id, String nome,String cognome, String email, String password) {
this.id = id;
this.nome = nome;
this.cognome = cognome;
this.email = email;
this.password = password;
}
public Long getid_docenti() {
return id;
}
public void setid_docenti(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCognome() {
return cognome;
}
public void setCognome(String cognome) {
this.cognome = cognome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "docenti [id=" + id + ", nome=" + nome + ", cognome=" + cognome + ", email=" + email + ", password=" + password + "]";
}
}
package com.java.scuola.model;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Entity
@Table(name = "Moduli")
public class Moduli {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer idmoduli;
@NotNull
@Size(min=4, max=45)
private String nomemodulo;
//collego a cascata per modulidocente
@OneToMany(mappedBy = "modulo", cascade = CascadeType.ALL)
private Set<Modulidocenti> modulidocente = new HashSet<>();
//collego a cascata per lezioni
@OneToMany(mappedBy = "modulo", cascade = CascadeType.ALL)
private Set<Lezioni> lezioni = new HashSet<>();
//collego a cascata per esami
@OneToMany(mappedBy = "modulo", cascade = CascadeType.ALL)
private Set<Esami> esami = new HashSet<>();
public Moduli(String string) {}
public Moduli() {
super();
}
public Moduli(Integer id_moduli, @NotNull @Size(min = 4, max = 45) String nome_modulo) {
super();
this.idmoduli = id_moduli;
this.nomemodulo = nome_modulo;
}
public Integer getId_moduli() {
return idmoduli;
}
public void setId_moduli(Integer id_moduli) {
this.idmoduli = id_moduli;
}
public String getNome_modulo() {
return nomemodulo;
}
public void setNome_modulo(String nome_modulo) {
this.nomemodulo = nome_modulo;
}
@Override
public String toString() {
return "docenti [id=" + idmoduli + ", nome_modulo=" + nomemodulo +"]";
}
}
package com.java.scuola.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name = "modulidocenti")
public class Modulidocenti {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int idmoduliDocenti;
@ManyToOne
@JoinColumn
private Moduli modulo;
@ManyToOne
@JoinColumn
private Docenti docente;
public Modulidocenti() {
}
public Moduli getmodulo() {
return modulo;
}
public void setmodulo(Moduli modulo) {
this.modulo = modulo;
}
public Docenti getdocente() {
return docente;
}
public void setdocente(Docenti docente) {
this.docente = docente;
}
}
DAO MODULIDOCENTI- quando eseguo il metodo mi da l'errore riportato sopra ma non ne capisco il motivo
package com.java.scuola.Dao;
import org.springframework.data.repository.CrudRepository;
import com.java.scuola.model.Modulidocenti;
import java.util.List;
public interface ModulidocentiDao extends CrudRepository<Modulidocenti, Integer>{
Modulidocenti findById(int id); //select * from Customer where id = :id
List<Modulidocenti> findByDocentiid(long id);// select * modulidocenti where id = :id}
// errore qui
}
ControllerDocenti- da qui eseguo la logica
package com.java.scuola.controller;
import java.util.List;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.java.scuola.Dao.DocentiDao;
import com.java.scuola.Dao.ModuliDao;
import com.java.scuola.Dao.ModulidocentiDao;
import com.java.scuola.model.Docenti;
import com.java.scuola.model.Lezioni;
import com.java.scuola.model.Moduli;
import com.java.scuola.model.Modulidocenti;
import com.java.scuola.services.DocentiService;
import com.java.scuola.web.dto.DocentiRegistrationDto;
@Controller
@RequestMapping("")
public class DocentiController {
@Autowired
private DocentiDao docentiRepository;
@Autowired
private ModuliDao moduliRepository;
private ModulidocentiDao moduliDocentiRepository;
private DocentiService docenteService;
public DocentiController(DocentiService docenteService) {
super();
this.docenteService = docenteService;
}
// REGISTRAZIONE DOCENTE
@ModelAttribute("docente")
public DocentiRegistrationDto docenteregistrationDto() {
return new DocentiRegistrationDto();
}
@GetMapping("/registrazioneDocente")
public String showRegistrationForm() {
return "registrazioneDocente";
}
@PostMapping("/registrazioneDocente")
public String registerDocente(@ModelAttribute("docente") DocentiRegistrationDto registrationDto) {
docenteService.save(registrationDto);
return "redirect:/registrazioneDocente?success";
}
// LOGIN
@RequestMapping ("/loginD")
public String loginD() {
return "loginD";
}
@RequestMapping(value="/signinD", method=RequestMethod.POST)
public String postLogin(@RequestParam("emailD") String email, @RequestParam("passwordD") String password, Model model, HttpSession session) {
Docenti docente = docentiRepository.login(email, password);
if(docente == null)
return "redirect:/loginD?error"; // si apre un div sopra con il messagio "Credenziali sbagliate" tramite thymeleaf {param.error}
else {
session.setAttribute("loggedDocente", docente);
return "redirect:/menuDocente";
}
}
// MENU DOCENTI
@RequestMapping ("/menuDocente")
public String menuDocente() {
return "menuDocente";
}
// AGGIUNTA MODULO
@RequestMapping("/menuDocente/aggiuntaModuli")
public String aggiuntaModuli() {
return "aggiuntaModuli";
}
@RequestMapping(value="/aggiuntaModuli", method=RequestMethod.POST)
public String postAggiungi(@RequestParam("modulo") String modulo, Model model, HttpSession session) {
Moduli nuovoModulo = new Moduli(null, modulo);
System.out.println(nuovoModulo);
moduliRepository.save(nuovoModulo);
return "redirect:/menuDocente";
}
/*@GetMapping("/menuDocente/listaModuli")
public String listaModuli() {
return "listaModuli";
}*/
// Dovrebbe fare vedere la lista dei moduli di un singolo prof ma da errore
@RequestMapping("/menuDocente/listaModuli")
public String Moduli(Model model, HttpSession session) {
// creo una variabile temporanea docente alla quale setto degli attributi
Docenti docente = (Docenti) session.getAttribute("loggedDocente");
if(docente != null) {
//
List<Modulidocenti> modulidocenti = moduliDocentiRepository.findByDocentiid(docente.getid_docenti());
List<Moduli> moduli = new ArrayList<>();
for (Modulidocenti x:modulidocenti)
moduli.add(x.getmodulo());
model.addAttribute("listamoduli", moduli);
return "listaModuli";
}
else
return "redirect:/menuDocente";
}
// REGISTRO DOCENTE
@GetMapping ("/menuDocente/registroDocente")
public String registroDocente() {
return "registroDocente";
}
// REGISTRO LEZIONI
@GetMapping ("/menuDocente/lezioniDocente")
public String registroLezioni() {
return "lezioniDocente";
}
/*@RequestMapping (value = "/menuDocente/lezioniDocente")
public String LezioniDocente(Model model, HttpSession session) {
Docenti doc = (Docenti)session.getAttribute("loggedDocente");
System.out.println(doc);
if (doc == null) {
return "redirect:/registrazioneDocente";
}
ArrayList<List<Lezioni>>lista = docentiRepository.lezioniDocenti(doc.getid_docenti());
model.addAttribute("listaLezioni", lista);
System.out.println(lista);
return "lezioniDocente";
} */
// ESAMI
@GetMapping ("/menuDocente/registroEsami")
public String registroEsami() {
return "esamiDocente";
}
// REGISTRO VOTI
@GetMapping ("/menuDocente/registroVoti")
public String registroVoti() {
return "votiDocente";
}
}
<html xmlns:th="https://thymeleaf.org">
<head>
<title>Lista moduli</title>
</head>
<body>
<h1>lista moduli</h1><br>
<table>
<tr>
<th>Modulo</th>
</tr>
<th:block th:each="moduli : ${listamoduli}">
<tr>
<td th:text="${modulo.id_moduli}"></td>
<!-- <td th:text="${modulo.modulo}"></td>-->
</tr>
</th:block>
</table>
<a href="/menuDocente/aggiuntaModuli">Aggiungi Moduli</a><br>
</body>
</html>
TABLE
Upvotes: -1
Views: 926
Reputation: 60
When u are using a Spring Data, u should correctly name methods. I guess that u have an error no property type Docentiid. U should name method findByDocentiId. If u use IntellIdea it can suggest u correct name.
Upvotes: 0
Reputation: 1543
use findByDocenti_id (joined table field concatenate with underscore)
Upvotes: 0