如何从 javax. persistence. criteria.Path 获取当前节点名称
How to get the current node name from a javax.persistence.criteria.Path
有没有办法获取 Path
实例的当前节点名称(或整个链)?据我所知,Path
中没有方法可以这样做。我尝试了 toString()
方法,但在 EclipseLink 中未覆盖该方法(它为您提供默认输出:org.eclipse...PathImpl@331a119a
)。
我正在使用 EclipseLink,因此 EclipseLink 特定解决方案对我来说没问题。
当我检查我想获取使用调试器的名称的路径时,我注意到 Path
的 EclipseLink 实现有一个名为 currentNode
的 QueryKeyExpression
类型的字段,它具有我想要的名字。所以我写了一个实用方法:
public static QueryKeyExpression getCurrentNode(Path<?> path) {
try {
return (QueryKeyExpression) ReflectionUtils.getValue(path, "currentNode");
}
catch (NoSuchFieldException ex) {
throw new IllegalStateException(ex);
}
}
这让我可以得到这样的名字:
JpaUtils.getCurrentNode(path).getName()
另请参阅:
- How to get the fields in an Object via reflection?
有没有办法获取 Path
实例的当前节点名称(或整个链)?据我所知,Path
中没有方法可以这样做。我尝试了 toString()
方法,但在 EclipseLink 中未覆盖该方法(它为您提供默认输出:org.eclipse...PathImpl@331a119a
)。
我正在使用 EclipseLink,因此 EclipseLink 特定解决方案对我来说没问题。
当我检查我想获取使用调试器的名称的路径时,我注意到 Path
的 EclipseLink 实现有一个名为 currentNode
的 QueryKeyExpression
类型的字段,它具有我想要的名字。所以我写了一个实用方法:
public static QueryKeyExpression getCurrentNode(Path<?> path) {
try {
return (QueryKeyExpression) ReflectionUtils.getValue(path, "currentNode");
}
catch (NoSuchFieldException ex) {
throw new IllegalStateException(ex);
}
}
这让我可以得到这样的名字:
JpaUtils.getCurrentNode(path).getName()
另请参阅:
- How to get the fields in an Object via reflection?