This is a "feature" of JDBC, not of Hibernate. Consequently you can change this behaviour in the jdbc options (jdbc connect string in hibernate.cfg.xml) and not in the Hibernate options. By default the date values are always saved in the time zone of the client application (and not in the time zone of the database, as it seems to be more logic). MySQL for example knows a jdbc connect option which forces the database to store the date values always in UTC. I don't know if H2 knows such an option, might be not.
In your example the 25th March was the first day with daylight time in that your. 25th March 02:00 didn't exist in your time zone, that's why you don't find it in the database.
If you don't want an option in the connect string (which has the disadvantage it might not be available on all databases) there are three possibilities how to go around the problem:
Before inserting and after reading you do the time zone conversation in your program. For this additionally to your normal getter get/setMyTime() you write an extra getter and setter only for Hibernate get/setHibernateMyTime(), where you do the time zone conversion and which you use in the mapping files or in the annotations. For the time zone conversion you can use TimeZone.getOffset().
Use Strings instead of dates. In this case you don't need to do the time zone conversion, but you have to convert strings into dates and vice versa.
Run the application with UTC as local time. This has disadvantages if the local time of the user is needed anywhere, for example in the user interface.
We did solution 1. in our application.