Was ist der beste Weg für die Abfrage, indem Sie den Wert des Feldes des Fremdobjekts verwenden?So erstellen Sie eine Abfrage mit der Auswahl nach dem Wert des Felds für das Fremdobjekt
Angenommen, ich habe diese drei Klassen.
UnitResult Klasse, die Menge der Einheiten beschreibt:
@DatabaseTable
public class UnitResult {
public static final String ID_FIELD_NAME = "id";
public static final String UNIT_COLUMN_NAME = "unit";
public static final String RESULT_COLUMN_NAME = "result";
@DatabaseField(generatedId = true, columnName = ID_FIELD_NAME)
public Integer id;
@DatabaseField(foreign = true, canBeNull = false, columnName = UNIT_COLUMN_NAME)
public Unit unit;
@DatabaseField(canBeNull = true, columnName = RESULT_COLUMN_NAME)
public Integer result = null;
}
Anteilsklasse, die in einem Markt bestimmte Einheiten beschreiben (zB jiuce, Snack etc.):
@DatabaseTable
public class Unit {
public static final String ID_FIELD_NAME = "id";
public static final String TYPE_FIELD_NAME = "type";
@DatabaseField(id = true, columnName = ID_FIELD_NAME)
public int id;
@DatabaseField(canBeNull = false, columnName = TYPE_FIELD_NAME)
public UnitType type;
}
Und Enum von Gerätetyp :
public enum UnitType {
JUICES,
DRINKS,
SNACKS,
NPD;
}
So wie kann ich Abfrage alle UnitResult
wo Unit
Typ ist UnitType.JUICES
?
Vielen Dank, Grau! Und Respekt für OrmLite Bibliothek! :) – Yarovoy
Das scheint nicht mehr zu funktionieren. Da die ID-Spalte automatisch zur Abfrage hinzugefügt wird, wird "SQLException" ausgelöst. Die innere Abfrage muss nur eine ausgewählte Spalte anstelle von "*" enthalten. –
Follow-up: Ich glaube, die Absicht ist, dass Sie jetzt eine Verknüpfung verwenden. –