2016-12-15 1 views
0

Ich verwende die SQL-Version von QueryDSL und es ist Code-Generator, um meine Q-Klassen und die entsprechenden Java-POJOS aus der Datenbank zu erstellen.QueryDSL SQL. Char Y/N Datenbankfeld zum booleschen Attribut im Modell

eine ältere Datenbank verwenden (Firebird) haben wir einige Datenbank CHAR(1) Spalten behandelt, als boolean deren Domäne ist 'Y 'und 'N'. Gibt es eine Möglichkeit, wenn diese Spalten auf meine Modellattribute projiziert werden, um diese Y/N-Werte automatisch einem booleschen Java-Typ zuzuordnen oder zu konvertieren?

Antwort

1

querydsl-sql gibt den Typ zurück, der vom verwendeten JDBC-Treiber zugeordnet wurde. Ich würde vorschlagen, Projections.constructor mit Ihrem POJO instanziiert und haben einen Getter, die eine boolean kehrt wie folgt:

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); 
    } 

} 

Ähnlich Sie ein konkretes Beispiel von com.querydsl.core.types.MappingProjection schaffen könnte, zwingende protected abstract T map(Tuple row) Ihre POJO mit den gewünschten Typen zu instanziiert.

Verwandte Themen