J'utilise Hibernate et obtenir« Aucune ligne avec l'identifiant donné existe » bien qu'il n'existe
Exception dans le thread « principal » org.hibernate.ObjectNotFoundException: Aucune ligne avec l'identifiant donné existe: [# 271]
Ce qui est assez étrange à propos de cette erreur est que l'objet avec l'ID donné existe dans la base de données. J'ai inséré l'enregistrement problématique dans une autre exécution de l'application. Si j'y accède dans le même cycle (c'est-à-dire la même session d'hibernation), il ne semble pas y avoir de problèmes pour récupérer les données.
Tout simplement parce que cela pourrait être une faute de la mise en correspondance:
public class ProblemClass implements Persistent {
@ManyToOne(optional = false)
private MyDbObject myDbObject;
}
public class MyDbObject implements Persistent {
@OneToMany(mappedBy = "myDbObject")
private List<ProblemClass> problemClasses;
@ManyToOne(optional = false)
private ThirdClass thirdClass;
}
Je n'ai absolument aucune idée même où regarder. Des indices très appréciés!
Juste pour clarifier: Les données ont été insérées dans un autre RUN de l'application. Il est définitivement dans la base de données, comme je peux le voir via une requête SQL après la fin de l'application. Et après cela, c'est-à-dire lors du démarrage de l'application à nouveau, j'obtiens l'erreur dans la requête FIRST de la base de données - pas de suppression, pas de retour en arrière impliqué.
Addition: Parce qu'il a été demandé, voici le code pour récupérer les données:
public List<ProblemClass> getProblemClasses() {
Query query = session.createQuery("from ProblemClass");
return query.list();
}
Et juste pour le rendre complet, voici le code générique pour l'insérer (avant de récupérer dans un autre RUN l'application):
public void save(Persistent persistent) {
session.saveOrUpdate(persistent);
}
Utilisez les tables InnoDB ... –
Merci beaucoup d'avoir posté la réponse! – Lisa