收集操作中JPA/EclipseLink继承的子类型?

收集操作中JPA/EclipseLink继承的子类型?,jpa,eclipselink,jpa-2.0,Jpa,Eclipselink,Jpa 2.0,继承的子类型似乎会中断集合查询,这是: SELECT o FROM Job AS o WHERE o.occupation = :occupation AND o NOT IN :jobs 恐惧而死 org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of Campaign use setObject ... 当:jobs集合包含活动时,Job的子类 这是预期的还是错误?这是预期

继承的子类型似乎会中断集合查询,这是:

SELECT o FROM Job AS o WHERE o.occupation = :occupation AND o NOT IN :jobs
恐惧而死

org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of Campaign use setObject ...
当:jobs集合包含活动时,Job的子类


这是预期的还是错误?

这是预期的。问题是,当JPA只支持一组值时,您正在传入一组实体。试用 “从作业中选择o作为o,其中o.occulation=:occulation和o.id不在:jobs\u id中”


其中jobs_id是主键值的集合

有趣的是,EclipseLink文档说没问题[除了集合包含多种类型的情况外,它工作得很好。EclipseLink文档只显示了一个字段比较示例(e.id in:param),JPA 2.0规范第4.6.9节说明:“状态\字段\路径\表达式必须具有字符串、数字、日期、时间、时间戳或枚举值。“。它不允许实体比较,因为它不适用于所有数据库上的所有实体或映射类型。我不确定您正在使用的EclipseLink的哪个版本-它可能适用于更高版本,但由于规范不支持它,并且不适用于所有类型,因此最好修复您的查询。”。