Hi,
I had a similar problem trying to make an Instant to persist as
datetime in db. Looking at source of joda-time-hibernate I simply came
up with writing the mapping myself (see below).
HTH,
Tacio
PS:
public abstract class AbstractPersistence implements UserType {
@Override
public Object assemble(Serializable cached, Object value)
throws HibernateException {
return cached;
}
@Override
public Serializable disassemble(Object value) throws HibernateException {
return (Serializable) value;
}
@Override
public int hashCode(Object obj) throws HibernateException {
return obj.hashCode();
}
@Override
public boolean isMutable() {
return false;
}
@Override
public Object replace(Object original, Object target, Object owner)
throws HibernateException {
return original;
}
}
public class PersistentInstantAsDateTime extends AbstractPersistence
implements UserType {
private static final int[] SQL_TYPES = new int[]{Types.TIMESTAMP};
@Override
public boolean equals(Object x, Object y) throws HibernateException {
if (x == y){
return true;
}
if (x == null || y == null){
return false;
}
Instant dtx = (Instant) x;
Instant dty = (Instant) y;
return dtx.equals(dty);
}
public Object nullSafeGet(ResultSet resultSet, String[] strings,
Object object) throws HibernateException, SQLException{
return nullSafeGet(resultSet, strings[0]);
}
public Object nullSafeGet(ResultSet resultSet, String string) throws
SQLException{
Object timestamp =
Hibernate.TIMESTAMP.nullSafeGet(resultSet, string);
if (timestamp == null){
return null;
}
return new Instant(new DateTime(timestamp).getMillis());
}
public void nullSafeSet(PreparedStatement preparedStatement, Object
value, int index) throws HibernateException, SQLException{
if (value == null){
Hibernate.TIMESTAMP.nullSafeSet(preparedStatement, null, index);
}
else{
Hibernate.TIMESTAMP.nullSafeSet(preparedStatement, (new DateTime(
value)).toDate(), index);
}
}
@SuppressWarnings("unchecked")
@Override
public Class returnedClass() {
return Instant.class;
}
@Override
public int[] sqlTypes() {
return SQL_TYPES;
}
@Override
public Object deepCopy(Object value) throws HibernateException {
if (value == null) {
return null;
}
return new Instant(value);
}
}
Usage example:
@Column(name="start_ts", columnDefinition="datetime")
@Type(type="com.example.PersistentInstantAsDateTime")
private Instant startTs;
On Nov 14, 2007 10:09 PM, Jim Breen <[EMAIL PROTECTED]> wrote:
>
>
> On 2007-09-27, Stephen Colebourne wrote:
>
>
>
> Following a number of requests, I have released the hibernate project v1.0:
> http://joda-time.sourceforge.net/contrib/hibernate/index.html
>
> This version provides persistence of LocalDate, LocalTime,
> LocalDateTime, Period and Duration.
>
> Please note that if you used a pre-release of the library for persisting
> Period objects, then the final release uses a different database format
> (ISO8601 string rather than descriptive string).
>
> Also note that I have no personal experience of Hibernate, so this
> project is released separate to Joda-Time, and with slightly less
> guarantees. ie. we hope it works well for you!
>
> Stephen
>
> How can I persist LocalDateTime? The persistence classes seem to support
> LocalDate and LocalTime, but none seem to work with LocalDateTime. I've
> tried PersistenceLocalDate, PersistenceLocalTimeAsString, and
> PersistentDateTime, but always get an error that my LocalDateTime field
> can't be copied or converted to another Joda type. Am I missing something?
>
> Thanks for any ideas about how to persist LocalDateTime.
>
> Jim
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems? Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> Joda-interest mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/joda-interest
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Joda-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/joda-interest