2016-12-15 21 views
0

私はQueryDSLのSQLバージョンを使用しており、Q-Classesとそれに対応するJava POJOSをデータベースから構築しています。レガシーデータベース(Firebirdの)を使用してQueryDSL SQL。モデル内のブール型の属性へのChar Y/Nデータベースフィールド

我々は、そのドメイン'Y 'と'N'あるブールとして扱われ、いくつかのデータベースCHAR(1)の列を持っています。これらの列をモデル属性に投影して、これらのY/N値を自動的にブール型Java型にマップまたは変換する方法はありますか?

答えて

1

querydsl-SQLは、使用されているJDBCドライバによってマッピングされた型を返すであろう。

List<Pojo> pojos = query 
        .select(Projections.constructor(Pojo.class, qtable.yesNoValue)) 
        .fetch(); 

public class Pojo { 

    private final String yesNoValue; 

    public Pojo(String yesNoValue) { 
     this.yesNoValue = yesNoValue; 
    } 

    public boolean getYesNoValue() { 
     return "Y".equals(yesNoValue); 
    } 

} 

同様に、あなたが希望のタイプを使用してPOJOをインスタンス化するためprotected abstract T map(Tuple row)をオーバーライドし、com.querydsl.core.types.MappingProjectionの具体的なインスタンスを作成することができます。私はあなたのPOJOをインスタンス化し、次のようにbooleanを返すゲッターを持つようにProjections.constructorを使用してお勧めします。

関連する問題