javax.la persistance.PersistenceException: org.mise en veille prolongée.type.SerializationException: impossible de désérialiser
Lors de l'exécution d'une Requête de Critères en veille prolongée, j'obtiens l'exception suivante:
javax.persistence.PersistenceException: javax.persistence.PersistenceException: org.hibernate.type.SerializationException: could not deserialize: could not deserialize
Quel pourrait être le problème?
PS: bien que peut-être pas pertinente, ma version d'hibernate hibernate est-4.0.1 final.
OriginalL'auteur Andrei I | 2014-01-30
Vous devez vous connecter pour publier un commentaire.
Le problème était qu'une entité référencée avait une autre référence à une entité et la relation n'a PAS été annoté par toute de la
@OneToMany
-comme les annotations.Je suis vraiment heureux que je peux vous aider 🙂
Malheureusement, je vais avoir ce problème...quelque part dans ~100 classes d'entité avec 7500+ lignes de code. L'exception n'est pas vraiment utile dans le moindre. =/
Je voulais juste donner JPA, essayez un autre et a couru dans tout cela. Non seulement est-JPA lui-même, très facile à utiliser mal, quand vous le faites ne vous aide pas à résoudre le problème...
OriginalL'auteur Andrei I
Cette exception peut se produire lorsque hibernate obtient des données de type inattendu de la base de données de résultats de la requête. Par exemple hibernate s'attend à ce nombre, mais il obtient de la chaîne à la place.
Dans ce cas, recherchez
StreamCorruptedException: "invalid stream header": 74657374
exception dans stacktrace. Le nombre est l'astuce pour vous, mais vous pouvez le convertir en texte avec la table ascii. Soixante quatorzeSoixante cinqSoixante treizeSoixante quatorze donnetest
comme une chaîne de caractères. Qui a de la valeur du même nom que la colonne de la table, mais avec un genre complètement différent. Donc, hibernate a été l'interrogation de mauvaise colonne qui s'est passé pour exister un peu par hasard, de sorte que la première exception soulevée n'était pascolumn does not exist
maiscould not deserialize
à la place. Hibernate m'attendais long, mais il a obtenu de la Chaîne à la place.Je suis dans cette galère parce que correcte
@Column(name="id_user")
a été ignorée et hibernate inférer mauvaise colonne nomuser
de nom de champ, ce qui n'était pasidUser
mais justeuser
avecgetUser()
de lecture. L'annotation a été ignoré car il était spécifié dans la propriété de lecture au lieu de la zone, ce qui a été prévu par hibernate, parce que l'entité de la superclasse annoté champ ID avec@Id
, au lieu de l'ID de lecture, qui est ce que je groundlessly prévu.OriginalL'auteur Vlastimil Ovčáčík
Dans mon cas c'était un problème avec
java.time.LocalDate
de Java 8, et j'ai oublié d'attribuer un convertisseur à cet attribut.Il semble que les Versions plus récentes (5.2.1 Final) est intégré dans le convertisseur, de sorte que peut vous aider si vous n'êtes pas lié à une version spécifique.
Mais vérifier les Annotations est certainement le chemin à parcourir, mais je voudrais vérifier tous les.
OriginalL'auteur kaba713
J'ai eu le même problème. Elle était due à un enum dans un
@SqlResultSetMapping
. La solution est ici: @ConstructorResult avec Enum en JPA 2.1Modifier, suite à un commentaire de @Eugene Mihaylin:
Donc, j'ai eu la situation suivante:
Et j'avais besoin de changer d':
dans le but de résoudre le problème.
Plus tard, dans le constructeur de la DTO (annoté comme
@Entity
), je suis en train de faire:MyCustomEnum.valueOf(...)
afin d'analyser la valeur de la chaîne et de l'affecter au champ spécifié de typeMyCustomEnum
dans la DTO.OriginalL'auteur Мартин П.
J'ai ma classe d'entité UploadFiles avoir deux champs fid & fname où fid étant la clé primaire.
J'ai ma requête dans dao comme
quand il execute
query.list()
,il donne la sérialisation exceptionOriginalL'auteur shahid