如何让QueryDSL动态地从QClass获取路径的字段类型?

问题描述 投票:1回答:2

QueryDSL为我们创建了一些不错的元模型Q类,这些Q类的字段在任何可能的情况下都是特定类型的路径。例如,如果您的User类中具有年龄的Integer字段,则该字段在QUser类中将具有NumberPath类型。

假设我正在使用QueryDSL建立类似的查询

user.from(user).where(user.age.eq(30))

我希望能够获取QClass中存在的user.age的路径类型-即NumberPath。

这可能吗?

java jpa querydsl metamodel
2个回答
0
投票

您是否尝试简单地呼叫user.age.getClass()

user.age instanceof NumerClass也应该起作用。

如果您的裸名为String,则可以使用反射:

user.getClass().getDeclaredField("age").getType()

应返回NumberPatch.class。有点脏,但应该可以。


0
投票
com.querydsl.core.types.dsl.Expressions#stringPath(QUser.user, "age")

使用Querydsl 4.2.1测试

© www.soinside.com 2019 - 2024. All rights reserved.