Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaTypeDescriptorRegistry - Could not find matching type descriptor for requested Java class

I have a project running with no problem except this warning message:

WARN  org.hibernate.type.descriptor.java.JavaTypeDescriptorRegistry - Could not find matching type descriptor for requested Java class [java.util.List]; using fallback enviroment

Why am I getting this message? How can I disable it?

I'm using:

spring webmvc 4.2.1
hibernate-core 5.0.1

This message appears since I'm using JPA 2.1 AttributeConverter.

like image 683
hurelhuyag Avatar asked Sep 26 '15 08:09

hurelhuyag


2 Answers

You get this warning if the type your converter is supposed to convert does not implement Serializable, is not an enum nor one of the types Hibernate knows how to convert. As soon as you make the type your converter is supposed to convert Serializable, the warning goes away.

Looking through the Hibernate code, the purpose of a JavaTypeDescriptor seems to be to provide information on how to serialize certain types and whether or how it's possible to do deep copies. Because Hibernate doesn't know anything about the type, it makes some guesses. If you like, you can help Hibernate by supplying a JavaTypeDescriptor yourself. There's a Singleton for that.

like image 83
aha Avatar answered Oct 04 '22 17:10

aha


While both the answers are logical and correct none address the actual issue in the question above!

You are getting this error for java.util.List, neither can you write equals/hashcode implementations, nor extend Serializable, and defining a AbstractTypeDescriptor is pointless here.

You are getting this error simply because interface List is not Serializable in Java and you will have to choose an implementation which is.

The concrete types like ArrayList and LinkedList are Serializable, you can either use them (breaking interface-based programming) or create your own List implementations that extend/implement Serializable (none of the built-in concrete List implementations can be used then).

like image 14
NikhilWanpal Avatar answered Oct 04 '22 17:10

NikhilWanpal