jOOQを使用して結合クエリを実行しています。列名を一意に保つために、両方のテーブルの列にエイリアスを設定する必要があります。
列にエイリアシングを行うときに発生する情報の損失を回避する方法はありますか? または、jOOQ のスタイルに従って、列名の競合という目標を達成するためのより良い方法はありますか?
すべてのフィールドにエイリアスを設定すると、すべての型情報が失われます。
List<Field<?>> columns = factory.select().from(t1j).limit(0).fetch().getFields();
List<Field<?>> aliases = new LinkedList<Field<?>>();
for (Field f : columns) {
Field alias = Factory.fieldByName(t1j.getName(), f.getName())
.as(f.getName() + "_t1");
aliases.add(alias);
}
// columns.get(0).getType() == "class java.lang.String"
// aliases.get(0).getType() == "class java.lang.Object"