&引用;PropertyAccessException:无法通过反射设置器设置字段值;使用Hibernate 4

&引用;PropertyAccessException:无法通过反射设置器设置字段值;使用Hibernate 4,hibernate,jboss7.x,hibernate-mapping,Hibernate,Jboss7.x,Hibernate Mapping,在过去,我使用了带有Hibernate 3(来自J-boss 5.1)和@Temporal注释的java.util.Calendar。在移动到Hibernate4(j-Boss7.1)之后,我在尝试用户类型时遇到了这个PropertyAccessException 我的UT实际上只是org.hibernate.type.StringType的包装器,因为我只是将日历强制成字符串并返回以处理相对时间戳:没有时区的SQL时间戳 Caused by: javax.persistence.Persist

在过去,我使用了带有Hibernate 3(来自J-boss 5.1)和@Temporal注释的java.util.Calendar。在移动到Hibernate4(j-Boss7.1)之后,我在尝试用户类型时遇到了这个PropertyAccessException

我的UT实际上只是org.hibernate.type.StringType的包装器,因为我只是将日历强制成字符串并返回以处理相对时间戳:没有时区的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] ... 原因:javax.persistence.PersistenceException:org.hibernate.PropertyAccessException:无法通过[my class]的反射设置器设置字段值 在org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361)[hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] 在org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1289)[hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] 在org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:313)[hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] ... 有没有办法解决这个异常


编辑:目前我已经解决了这个问题,我放弃了UserType,转而将时间戳设置为字符串,并在setter和getter中对其进行解析和格式化。如果有人知道的话,我更愿意使用UserType或更干净的解决方案。

这个异常说明不了什么(除了它不能设置属性)。您的实体看起来像什么?实体有一个日历,带有扩展Hibernate用户类型的自定义类的注释。对不起,我不能再说了。如果时间允许的话,我将尝试制作一个孤立的Hello World示例。