views:

1300

answers:

1

I'm new to Hibernate and am working with an Oracle 10g database. We have columns in our tables that are of type TIMESTAMP WITH TIMEZONE. Hibernate does not seem to support this mapping directly. Is there a standard way to go about this?

Thanks

A: 

TIMESTAMP WITH TIMEZONE is Oracle extension and thus is not supported by Hibernate out of the box. You have two options:

1) Change your table structure to store timezone in a separate column (as VARCHAR2). Hibernate is able to map java.util.TimeZone as timezone type using its ID.

2) Write a custom class to hold both timestamp and timezone and a custom UserType that would persist it. It will have to be a CompositeUserType if you need the ability to use its individual properties (e.g. timezone or timestamp) in queries. Look at this example to get you started; you'll need to alter it to actually store the timezone.

ChssPly76
According to SQL in a Nutshell by Kline et al, TIMESTAMP WITH TIMEZONE is a type defined by SQL 2003. Thus, it's not an Oracle extension.
John O
Call it "SQL 2003 extension implemented by Oracle" then. It's still not supported by Hibernate
ChssPly76