-1

私はこれらの2つのクラスを持っています

@DatabaseTable
public class User {
    @DatabaseField(generatedId=true)
    private int _id;
    @DatabaseField
    private String name;
    @DatabaseField
    private String password;
    @DatabaseField(canBeNull = false, foreign = true, unique = true)
    private Item item;

@DatabaseTable
public class Item {
    @DatabaseField(generatedId=true)
    private int _id;
    @DatabaseField
    private String name;

プラットフォームを使用してデータベースから1人のユーザーにクエリを実行したいのですが、これらは一意であるため、どうすればよいですか?

4

1 に答える 1

0

「プラットフォーム」とは何かわかりません。User特定のに一致するをクエリするには、次のItemようにします。

List<User> results = userDao.queryBuilder().where().eq("item", item).query();

これにより、結果のリストが返されます。1つしかない場合は、

QueryBuilder<User, Integer> qb = userDao.queryBuilder();
qb.where().eq("item", item);
User user = qb.queryForFirst();

public final static String:を使用して列名を定義するのは良いパターンです。

@DatabaseTable
public class User {
    public final static String ITEM_COLUMN_NAME = "item";
    ...
    @DatabaseField(columnName = ITEM_COLUMN_NAME, canBeNull = false,
         foreign = true, unique = true)
    private Item item;

次に、クエリで次のことができます。

...eq(User.ITEM_COLUMN_NAME, item)

保存される実際のフィールドは整数ですが、このメソッドは、を取得してそこからidフィールドを抽出するeq(...)のに十分スマートであることに注意してください。item

于 2012-10-10T14:57:22.897 に答える