【发布时间】:2014-04-22 14:35:49
【问题描述】:
我正在尝试使用 QueryBuilder 为两个不同的类创建一个连接查询,一个 Product 类和一个 Coupon 类,它引用了一个 Product 属性,storeId。
public class Coupon {
@DatabaseField(columnName = TableColumns.PRODUCT, foreign = true, foreignColumnName = Product.TableColumns.STOREID)
private Product product;
}
public class Product {
@DatabaseField(columnName = TableColumns.ID, generatedId = true)
private Integer id;
@DatabaseField(columnName = TableColumns.STOREID, index = true, unique = true)
private Integer storeId;
}
我需要根据产品storeId获取优惠券列表。
public static List<Coupon> getByProduct(Product product) throws SQLException {
QueryBuilder<Coupon, String> couponBuilder = dao.queryBuilder();
QueryBuilder<Product, Integer> productBuilder = Product.dao.queryBuilder();
productBuilder.where().eq(Product.TableColumns.STOREID, product.getStoreId());
return couponBuilder.join(productBuilder).query();
}
此查询引发 SQL 异常:
04-22 11:26:08.058: W/System.err(19479): java.sql.SQLException: Could not find a foreign class com.cde.express.mccopa.model.Coupon field in class com.cde.express.mccopa.model.Product or vice versa
04-22 11:26:08.059: W/System.err(19479): at com.j256.ormlite.stmt.QueryBuilder.matchJoinedFields(QueryBuilder.java:554)
04-22 11:26:08.059: W/System.err(19479): at com.j256.ormlite.stmt.QueryBuilder.addJoinInfo(QueryBuilder.java:525)
04-22 11:26:08.059: W/System.err(19479): at com.j256.ormlite.stmt.QueryBuilder.join(QueryBuilder.java:316)
异常说我的类与外部字段无关,但 Coupon 类具有外部 Product 属性,并已正确注释。我已经检查了数据库,表中的值是正确的。
我该如何解决?
【问题讨论】:
-
不,我不知道。