【问题标题】:could not get a field value by reflection hibernate JPA + GF 4无法通过反射休眠 JPA + GF 4 获取字段值
【发布时间】:2014-12-03 22:13:09
【问题描述】:

我在 Glassfish 4 上使用带有 Hibernate 4.3.x 的 JPA 2.1,还尝试了 https://coderwall.com/p/e5fxrw 中列出的建议,但仍然出现以下错误。有人可以告诉我可能是什么问题吗?

javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: 无法通过 com.dstar.entity.PurchaseOrder.idpurchaseorder 的反射 getter 获取字段值

以下是实体代码,略过getter和setter方法:

@Entity  
@Table(name="purchaseorder")
@PersistenceUnit(name="dstarwarehouse",unitName="dstarwarehouse")
public class PurchaseOrder implements Serializable{

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    private int idpurchaseorder; 
    private boolean cash;
    private boolean credit;
    private String supplier;
    private String orderedBy;
    private String submittedBy;
    private String approvedBy;
    private Date expectedDate;
    private Date creationDate;
    private Date submittedDate;
    private Date approvalDate;
    private String purchaserName;

    private double total;

    @JoinColumn(name="idpurchaseorder", referencedColumnName="idpurchaseorder")
    private List<Part> parts;

}

【问题讨论】:

  • 当你得到那个异常时你到底想做什么?请详细说明您的问题,以便人们更有效地帮助您。

标签: glassfish-4 hibernate-4.x jpa-2.1


【解决方案1】:

我遇到了同样的问题,使用 glassfish 4.1、hibernate 4.3.6 并通过 @PersistenceContext 在无状态会话 Bean 中注入实体管理器,并看到了一些有趣的东西。

首先,如果我直接从 Persistence.createEntityManagerFactory("xxxxxx").createEntityManager() 获取实体管理器,问题就会消失。显然,我不喜欢用这种方式把事情做好。

将服务器从 glassfish 4.1 更改为 glassfish 4,似乎也解决了问题。所以,此时此刻,对我来说,glassfish 4.1 中的问题似乎有些问题。

【讨论】:

  • 当然我会尝试切换到GF4。我只是想坚持实体。
  • 您是否尝试过直接获取实体管理器而不是通过@PersistenteContext 注入?无论如何,当我将 GF 4.1 更改为 4.0 时,persist 有效。
  • 对不起,你是对的,不存在 glassfish 版本特定的问题。
  • 尝试使用hibernate 4.3.5 final
猜你喜欢
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2012-08-14
  • 2016-07-17
  • 1970-01-01
  • 2011-06-25
  • 2019-04-22
  • 2018-01-07
相关资源
最近更新 更多