-1

我有这两个课

@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;

我想使用平台从数据库中查询单个用户,因为它们是独一无二的,我该怎么做?

4

1 回答 1

0

我不确定什么是“平台”。要查询User与特定匹配的 a,Item您可以执行以下操作:

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

这将返回结果列表。如果只有一个,那么你可以做

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

使用 a 定义列名是一个很好的模式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)

请注意,虽然实际存储的字段是一个整数,但该eq(...)方法足够聪明,可以从中获取item并提取其 id 字段。

于 2012-10-10T14:57:22.897 回答