如何使用外键查询单个对象?

时间:2012-10-10 14:51:24

标签: java ormlite

我有这两个类

@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 个答案:

答案 0 :(得分:0)

我不确定“平台”是什么。要查询与特定User匹配的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();

使用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字段。