FasterXML / FasterXML/jackson-datatype-hibernate

When serialzing with DefaultTyping and hibernate, it is impossible to deserialize some models

Open
#90 1 comment 2 reactions 0 assignees View on GitHub
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.