“PropertyAccessException:无法通过反射设置器设置字段值”使用Hibernate 4

时间:2012-12-28 19:12:23

标签: hibernate jboss7.x hibernate-mapping

过去我使用了带有Hibernate 3(来自J-boss 5.1)和@Temporal注释的java.util.Calendar。在转移到Hibernate 4(j-boss 7.1)之后,我在尝试使用UserType时遇到了这个PropertyAccessException。

我的UT实际上只是org.hibernate.type.StringType的包装器,因为我只是将Calendar强制转换为String并返回以应对相对时间戳:没有时区的SQL时间戳。

Caused by: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: could not set a field value by reflection setter of [my-class]
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
    at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:313) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
...

我是如何解决此异常的?

编辑:目前我已经通过删除UserType来支持将时间戳设置为字符串,解析并在setter和getter中对其进行格式化。如果有人知道,我更喜欢使用UserType或更清洁的解决方案。

0 个答案:

没有答案