Java JPA规范-使用拆分为两个数据库列的嵌套字段创建查询

Java JPA规范-使用拆分为两个数据库列的嵌套字段创建查询,java,spring,hibernate,jpa,criteria,Java,Spring,Hibernate,Jpa,Criteria,我想使用criteria builder构建一个查询,它允许我获取嵌套字段成员的值大于给定值的记录 //jpa注释 抽象类抽象类{ 公共抽象SomeAbstractNestedClass getSomeAbstractNestedClass(); } //jpa注释 类ConcreteClass扩展了一些AbstractClass{ private ConcreteNestedClass ConcreteNestedClass; @凌驾 公共SomeAbstractNestedClass ge

我想使用criteria builder构建一个查询,它允许我获取嵌套字段成员的值大于给定值的记录

//jpa注释
抽象类抽象类{
公共抽象SomeAbstractNestedClass getSomeAbstractNestedClass();
}
//jpa注释
类ConcreteClass扩展了一些AbstractClass{
private ConcreteNestedClass ConcreteNestedClass;
@凌驾
公共SomeAbstractNestedClass getSomeAbstractNestedClass(){
返回concreteNestedClass;
}
}
//jpa注释
@TypeDef(name=“MoneyAmountWithCurrencyType”,typeClass=persistentmeyamountandcurrency.class)
抽象类AbstractNestedClass{
@列(列={
@列(name=“money\u currency”),
@列(name=“money\u number”)})
@类型(Type=“MoneyAmountWithCurrencyType”)
私人资金;
}
class ConcreteNestedClass扩展了一些AbstractNestedClass{}
公共规范getSpecification(QueryDto){
返回(根根、CriteriaQuery cq、CriteriaBuilder cb)->{
Root-concreteClass=cb.treat(Root,concreteClass.class);
Join joinedNested=concreteClass.Join(“concreteNestedClass”,JoinType.LEFT);//SingularAttributeJoin
//第二个get调用导致了提到的异常
//在第一次调用返回后,attribute是SingularAttributePath
路径money=joinedNested.get(“money”).get(“number”);
返回cq.where(cb.greaterThan(money,dto.getSomeBigDecimal()).getRestriction();
};
}
Money
是一个来自
org.javamoney.moneta
包的对象,它包含两个字段
currency
number
,这两个字段存储在数据库中的单独列中(
Money\u currency
Money\u number
),我想要实现的是只使用
number
值构建一些条件查询,而忽略
currency
。我试图建立一个如上所述的查询,但不幸的是,我得到了一个如下所示的异常,关于如何处理它,有什么想法吗

在代码中注释的地方,我得到以下异常:

org.springframework.dao.InvalidDataAccessApiUsageException:非法 尝试取消引用基本类型的路径源[null.money];嵌套 异常为java.lang.IllegalStateException:非法尝试 基本类型的取消引用路径源[null.money]


p.S不确定我的继承层次结构是否与
Money
字段有共同之处。

如果您想在查询中访问
Money
的特定部分,那么定制
用户类型可能不是最佳解决方案。
@embedded
将是更好的选择