有没有办法在下面的例子中不指定所有类型参数?我试过只使用“记录”,但无济于事。
Map<Integer,Result<Record6<Integer, String, Integer, String, String, Integer>>> records = db()
.select(TRANSITIONS.TRANSITION_ID, TRANSITIONS.TYPE, POSES.POSE_ID, POSES.NAME, IMAGES.URL, IMAGES.SCORE.max())
.from(TRANSITIONS
.join(POSES).on(POSES.POSE_ID.equal(TRANSITIONS.TO_POSE_ID))
.join(IMAGES).on(IMAGES.POSE_ID.equal(POSES.POSE_ID)))
.where(TRANSITIONS.FROM_POSE_ID.equal(fromPoseId))
.groupBy(TRANSITIONS.TRANSITION_ID, TRANSITIONS.TYPE, POSES.POSE_ID, POSES.NAME, IMAGES.URL)
.fetchGroups(TRANSITIONS.TRANSITION_ID);
答案 0 :(得分:0)
Java泛型的工作方式,你不能得到
Map<Integer, Result<?>> // or
Map<Integer, Result<Record>>
来自fetchGroups()
方法,鉴于其签名:
<K> Map<K, Result<R>> fetchGroups(Field<K> key)
但是,您可以通过调整<R>
ResultQuery
类型的db().select(new Field[] {
TRANSITIONS.TRANSITION_ID,
TRANSITIONS.TYPE,
POSES.POSE_ID,
POSES.NAME,
IMAGES.URL,
IMAGES.SCORE.max()
}).from(...)
类型,通过不安全的转换,或者通过使整个选择更少类型安全来解决此问题:
db().select(...) // "Typesafe" select clause
.select() // Additional select clause removing typesafety
或者使用这个技巧:
{{1}}