FasterXML / FasterXML/jackson-datatype-hibernate
When serialzing with DefaultTyping and hibernate, it is impossible to deserialize some models
- Dominant language
- Java
- Stars
- 331
- Forks
- 108
- Avg merge
- 5h 3m
- Merged PRs (30d)
- 1
Description
Consider a class that looks like this:
``` Java
class BeanOne
{
int id;
@OneToMany(fetch = FetchType.LAZY)
List links;
}
class BeanTwo
{
int id;
}
```
BeanOne and BeanTwo are managed by Hibernate via JPA. If I set DefaultTyping.JAVA_LANG_OBJECT on my Object mapper, and then serialize the bean, the output will depend on if i loaded the bean from the Database.
In the case where the bean is not loaded from the database the json would look like this:
``` json
{
"id": 1,
"links": [
{
"id": 2
},
{
"id": 3
}
]
}
```
In the case where the bean **is** loaded from the database the json would look like this:
``` json
{
"id": 1,
"links": [
[
"com.example.BeanTwo",
{
"id": 2
}
],
[
"com.example.BeanTwo",
{
"id": 3
}
]
]
}
```
Now, in principle, everything is working as intended, because Hibernate replaces the Lists with PersistentBags which have a raw-type List inside. Jackson will thus see the raw array and add types like the friendly serializer that it is. However, when I try to deserialize that json, it fails because jackson does not expect type information for the 'links' field since that field has an explicit type.
I am not sure if this qualifies as a bug or a feature request, but I think that there should be some way to reconcile these two features.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.