Hallo,
ich versuche gerade alle Texte aus einem Programmcode durch Unterstriche zu ersetzen und gleichzeitig in DB zu speichern:
die Methode
Das ist das Literal Primary Key Model:
Das Programm ersetzt richtig alle Texte, aber es kommt zu einem Fehler wenn's im Code zweites Text gefunden wird->
Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1;
statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?
org.springframework.orm.ObjectOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?
Ich vermute dass hängt mit dem auto_icrement zusammen.
ich versuche gerade alle Texte aus einem Programmcode durch Unterstriche zu ersetzen und gleichzeitig in DB zu speichern:
die Methode
Java:
public static String replaceTexte(int projekt_id,int programm_id,String text,LiteralRepository litRepo) {
String textRegex="([\']([^\\\\\']*([\\\\].)*)*[\'])";
Pattern paternText=Pattern.compile(textRegex);
Matcher matchText=paternText.matcher(text);
String textRegex1="([\"]([^\\\\\"]*([\\\\].)*)*[\"])";
Pattern paternText1=Pattern.compile(textRegex1);
Matcher matchText1=paternText1.matcher(text);
StringBuffer zwischenSaveZumErsetzen=new StringBuffer("");
StringBuffer zwischenSave=new StringBuffer(text);
StringBuffer literal=new StringBuffer("");
int index1=0;
int index2=0;
while(matchText.find()) {
System.out.println("das ist Treffer1"+(++count)+" vom Type->singleQuote");
index1=matchText.start()+1;
index2= matchText.end()-1;
literal.append(text.substring(index1,index2));
LiteralPK litPK=new LiteralPK(projekt_id,programm_id);
Literal lit=new Literal(litPK,literal.toString(),"singleQuote",index1, index2);
litRepo.save(lit);
literal.setLength(0);
zwischenSaveZumErsetzen.append(ersetzenDurchUnterschtrich(text.substring(index1,index2)));
zwischenSave.replace(index1, index2,zwischenSaveZumErsetzen.toString());
zwischenSaveZumErsetzen.setLength(0);
}
while(matchText1.find()) {
index1=matchText1.start()+1;
index2= matchText1.end()-1;
literal.append(text.substring(index1, index2));
LiteralPK litPK=new LiteralPK(projekt_id,programm_id);
Literal lit=new Literal(litPK,literal.toString(),"doubleleQuote",index1,index2);
System.out.println("das ist Treffer->"+lit.getLiteral());
litRepo.save(lit);
literal.setLength(0);
zwischenSaveZumErsetzen.append(ersetzenDurchUnterschtrich(text.substring(index1, index2)));
zwischenSave.replace(index1,index2,zwischenSaveZumErsetzen.toString());
zwischenSaveZumErsetzen.setLength(0);
}
return zwischenSave.toString();
}
Java:
@Embeddable
public class LiteralPK implements Serializable{
//default serial version id, required for serializable classes.
private static final long serialVersionUID = 1L;
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="literal_id")
private int literalId;
@Column(name="projekt_id", insertable=false, updatable=false)
private int projektId;
@Column(name="programm_id", insertable=false, updatable=false)
private int programmId;
public LiteralPK() {
}
public LiteralPK(int projektId, int programmId) {
super();
this.projektId = projektId;
this.programmId = programmId;
}
}
Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1;
statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?
org.springframework.orm.ObjectOptimisticLockingFailureException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?; nested exception is org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1; statement executed: update literal set literal=?, type=?, zeile_beginn=?, zeilen_ende=? where literal_id=? and programm_id=? and projekt_id=?
Ich vermute dass hängt mit dem auto_icrement zusammen.