JPA在查询中使用Oracle对象时编译查询时出错

时间:2011-07-27 17:55:58

标签: jpa

以下JPA查询无法编译 -

SELECT a FROM CUSTOMER a WHERE a.activeCustomer = 'N' AND a.customerInfo.city IN :cityName ORDER BY a.customerId

其中Oracle数据库中的表CUSTOMER具有基本类型--CUSTOMERINFO,其又具有各种值,例如 - 市 国家

此基本类型CUSTOMERINFO由LOCALBUSINESSCUSTOMERINFO和MNCBUSINESSCUSTOMERINFO以及其他一些人扩展。

我认为这可能是因为我在实体中定义列时将其定义如下 -

@Entity
@Table(name = "CUSTOMER", schema = "DBA")
@Converter(name="CustomerInfoConvertor", converterClass=CustomerInfoConvertor.class)

public class Customer implements Serializable {

      @Basic
      @Convert("CustomerInfoConvertor")
      @Column(columnDefinition = "CUSTOMERINFO")
      private ICustomerInfo customerInfo;

}

我已经尝试使用SQL进行此查询,但它工作正常,但从JPA(JPQL)使用它会引发编译错误。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您已将customerInfo映射为基本,因此它是JPQL中的基础。

该列是Object对象类型?

在EclipseLink 2.3中,您可以将其映射为Embeddable和@Struct注释,并使用Customer的嵌入式映射。 customer表是否有其他列或是否为类型表?如果是类型表,则使用@Struct映射它。