Hi Leute ,versuche weiter mein JSP Projekt in Spring umzuwandeln und bin dabei auf das Problem gestoßen,
wo ich versuche SQL Anfragen an die Datenbank zu schicken. Spring versteht kein natives SQL? oder was ich falsch gemacht habe?
Das ist die View wo ich versuche ein Neues Projekt in DB zu speichern:
Das ist der Controller:
Das ist das Model:
Und das ist die Fehlerausgabe:
fffffffffffffffffff 5
2021-04-27 15:27:35.355 WARN 9628 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1062, SQLState: 23000
2021-04-27 15:27:35.355 ERROR 9628 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Duplicate entry '4' for key 'PRIMARY'
2021-04-27 15:27:35.394 ERROR 9628 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet]
Meine Ausgabe printed 5 aber das Programm versucht neues Projekt mit id 4 inserten.
Ich hoffe Ihr könnt mir dabei helfen .Danke im Voraus.
Das ist Repository:
wo ich versuche SQL Anfragen an die Datenbank zu schicken. Spring versteht kein natives SQL? oder was ich falsch gemacht habe?
Das ist die View wo ich versuche ein Neues Projekt in DB zu speichern:
Code:
<div>
<p style="font-size:11pt; font-align:center;" ><b>Bitte geben Sie einen Namen für ein neues Projekt an</b><br></p>
<form action="/addProj" method="post" >
<table border=0 cellspacing=0 align="center" cellpadding=10>
<tr>
<td align="left">Projekt name:</td>
<td colspan='2'><input type="text" name="proj" size="20" maxlength="20" /></td>
</tr>
<tr>
<td align="left"></td>
<td colspan='2'><input type="submit" value="Anlegen" /></td>
</tr>
</table>
</form>
</div>
Java:
@Autowired
private SascoProjektRepository projektRepository;
@PostMapping("/addProj")
public String addProjToDb(@RequestParam String proj){
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
int max=projektRepository.findMaxIdForProjekt()+1;
System.out.println("fffffffffffffffffff "+max);// ###################################Zur Kontrole
Projekt projekt=new Projekt(max,proj,timestamp);
projektRepository.save(projekt);
return"/addProg";
}
Java:
@Entity
@NamedQuery(name="Projekt.findAll", query="SELECT p FROM Projekt p")
public class Projekt implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="projekt_id")
public int projektId;
private Timestamp hinzugefuegt;
private String projekt;
//bi-directional many-to-one association to Programm
@OneToMany(mappedBy="projekt")
private List<Programm> programms;
//bi-directional many-to-one association to ProjektStatistik
@OneToMany(mappedBy="projekt")
private List<ProjektStatistik> projektStatistiks;
public Projekt() {
}
//This is full Construktor##############################Den Construktor spreche ich an###############
public Projekt(int projektId,String projekt,Timestamp hinzugefuegt) {
this.projektId=projektId;
this.projekt=projekt;
this.hinzugefuegt=hinzugefuegt;
}
public int getProjektId() {
return this.projektId;
}
public void setProjektId(int projektId) {
this.projektId = projektId;
}
Und das ist die Fehlerausgabe:
fffffffffffffffffff 5
2021-04-27 15:27:35.355 WARN 9628 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1062, SQLState: 23000
2021-04-27 15:27:35.355 ERROR 9628 --- [nio-8080-exec-6] o.h.engine.jdbc.spi.SqlExceptionHelper : Duplicate entry '4' for key 'PRIMARY'
2021-04-27 15:27:35.394 ERROR 9628 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet]
Meine Ausgabe printed 5 aber das Programm versucht neues Projekt mit id 4 inserten.
Ich hoffe Ihr könnt mir dabei helfen .Danke im Voraus.
Das ist Repository:
Code:
@Repository
public interface SascoProjektRepository extends CrudRepository<Projekt,Integer>{
@Query("Select max(projektId) from Projekt")
public int findMaxIdForProjekt();
}