Add date-time module: Instant vs LocalDateTime vs OffsetDateTime vs ZonedDateTime round-tripped across JVM time zones on H2 and PostgreSQL

Hibernate 7.4.14.Final (plus an 8.0.0.Beta4 preview run), H2 2.5.252, PostgreSQL 17.11 in Docker.
Same-JVM and cross-zone round trips, @TimeZoneStorage modes, DST gap/overlap, precision
(precision vs secondPrecision), hibernate.jdbc.time_zone, java_time_use_direct_jdbc default flip.
Supersedes the date/time experiments of docs/13 (7.4.5); chapter 13 is unchanged.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_017ic4b7rnC7jppGGdHGESvy
This commit is contained in:
2026-10-29 00:56:54 +00:00
committed by Claude
co-authored by Claude Sonnet 5.5
parent c9faf35e61
commit ef2d2aa8ea
149 changed files with 2374 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
# Writes output/10-javap-*.txt: what the jars themselves say (constants, deprecations, setting names).
# Needs the jars in ~/.m2, so run it after a Maven build of each Hibernate line (run-all.sh does).
set -euo pipefail
cd "$(dirname "$0")/.."
M="$HOME/.m2/repository"
H7="$M/org/hibernate/orm/hibernate-core/7.4.14.Final/hibernate-core-7.4.14.Final.jar"
H8="$M/org/hibernate/orm/hibernate-core/8.0.0.Beta4/hibernate-core-8.0.0.Beta4.jar"
P32="$M/jakarta/persistence/jakarta.persistence-api/3.2.0/jakarta.persistence-api-3.2.0.jar"
P40="$M/jakarta/persistence/jakarta.persistence-api/4.0.0-M7/jakarta.persistence-api-4.0.0-M7.jar"
jp() { javap "$@" 2>&1 | grep -v '^Picked up'; }
mkdir -p output
{
for pair in "7.4.14.Final:$H7" "8.0.0.Beta4:$H8"; do
v="${pair%%:*}"; j="${pair#*:}"
echo "## hibernate-core $v: org.hibernate.annotations.TimeZoneStorageType"
jp -cp "$j" org.hibernate.annotations.TimeZoneStorageType | grep 'public static final'
echo "## hibernate-core $v: relevant setting names"
jp -constants -cp "$j" org.hibernate.cfg.MappingSettings | grep -E 'JAVA_TIME|PREFERRED_INSTANT|TIMEZONE_DEFAULT' | sed 's/^ *//'
jp -constants -cp "$j" org.hibernate.cfg.JdbcSettings | grep -E 'JDBC_TIME_ZONE' | sed 's/^ *//'
done
} > output/10-javap-hibernate-settings.txt
{
for pair in "3.2.0:$P32" "4.0.0-M7:$P40"; do
v="${pair%%:*}"; j="${pair#*:}"
echo "## jakarta.persistence-api $v: jakarta.persistence.Temporal"
jp -v -cp "$j" jakarta.persistence.Temporal | grep -E 'Deprecated: true|since|public interface'
echo "## jakarta.persistence-api $v: jakarta.persistence.Column second-precision attribute"
jp -cp "$j" jakarta.persistence.Column | grep -iE 'precision'
done
} > output/10-javap-jakarta-persistence.txt
ls -1 output/10-*