org.hibernate.QueryException:无法解析属性:查询中的复合键

时间:2014-10-31 02:29:38

标签: java hibernate hibernate-mapping

我正在尝试从具有三列复合主键的视图中获取记录列表。

我尝试将composite key嵌入entity class。但是我得到了下面提到的错误。视图列(VW_ALERTS)为C_IDMAT_IDP_MONTHCO_TYPECO_SUBTYPE

这里的复合键是C_ID, MAT_ID, P_MONTH。我在embeddable类中创建了它们的属性。

请帮助解决问题

org.hibernate.QueryException: could not resolve property: coreId of: com.sp.cpem.dto.VwAlerts [FROM com.ct.cpem.dto.VwAlerts d ORDER BY d.cId ASC]

以下代码用于执行hql。

            Session session = sessionFactory.openSession();
            String hql = "FROM VwAlerts d ORDER BY d.coId ASC";
            Query query = session.createQuery(hql);
            return query.list();

实体类:

            @SuppressWarnings("unchecked")
            @Entity
            @Table(schema = "TIGER", name = "VW_ALERTS")
            public class VwAlerts {

                @Embedded
                private VwAlertsPK vwAlertsPK;

                @Basic
                @Column(name = "CO_TYPE", nullable = true)
                private String coType;

                @Basic
                @Column(name = "CO_SUBTYPE", nullable = true)
                private String coSubType;

用于获取复合键的类

 @Embeddable
            public class VwAlertsPK  implements Serializable {
                @Basic
                @Column(name = "C_ID", nullable = false)
                private BigDecimal cId;

                @Basic
                @Column(name = "MAT_ID", nullable = true)
                private BigDecimal matId;

                @Basic
                @Column(name = "P_MONTH", nullable = true)
                private BigDecimal pMonth;

我希望从视图中获取所有记录。 我尝试使用实体类中的@Id列,它只通过从视图中返回第一行的重复记录而失败。

1 个答案:

答案 0 :(得分:0)

您的实体VwAlerts只有3个属性 - > vwAlertsPK, coType, coSubType

但是在您的HQL中,您尝试访问实体中不存在的属性coreId

FROM com.ct.cpem.dto.VwAlerts d ORDER BY d.coreId ASC

因此,将属性coreId添加到您的实体,或者只更新ORDER BY子句,以便指向实体的正确属性。