以下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)使用它会引发编译错误。
感谢您的帮助!
答案 0 :(得分:0)
您已将customerInfo映射为基本,因此它是JPQL中的基础。
该列是Object对象类型?
在EclipseLink 2.3中,您可以将其映射为Embeddable和@Struct注释,并使用Customer的嵌入式映射。 customer表是否有其他列或是否为类型表?如果是类型表,则使用@Struct映射它。