在查询中使用Oracle对象时编译查询时发生JPA错误

在查询中使用Oracle对象时编译查询时发生JPA错误,jpa,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和MNCBUSINESSCUSTOM

以下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)使用它会引发编译错误


谢谢你的帮助

您已经将customerInfo映射为basic,因此它是JPQL中的basic

该列属于对象类型

在EclipseLink 2.3中,您可以将其映射为可嵌入和@Struct注释,并使用来自客户的嵌入映射。customer表是否有其他列,还是类型表?如果它是一个类型表,那么使用@Struct来映射它