我正在尝试从具有三列复合主键的视图中获取记录列表。
我尝试将composite key
嵌入entity class
。但是我得到了下面提到的错误。视图列(VW_ALERTS)为C_ID
,MAT_ID
,P_MONTH
,CO_TYPE
,CO_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
列,它只通过从视图中返回第一行的重复记录而失败。
答案 0 :(得分:0)
您的实体VwAlerts
只有3个属性 - > vwAlertsPK, coType, coSubType
但是在您的HQL中,您尝试访问实体中不存在的属性coreId
。
FROM com.ct.cpem.dto.VwAlerts d ORDER BY d.coreId ASC
因此,将属性coreId
添加到您的实体,或者只更新ORDER BY
子句,以便指向实体的正确属性。