我有两个模型(为讨论而简化),父级和子级处于 OneToMany 关系。Child 具有 String 属性类型。我想创建一个方法
public List<String> Parent.getTypes()
返回不同的类型列表。这是我能想到的最好的:
public List<String> getTypes() {
String sql = "select distinct type from child where parent_id=:id";
SqlQuery sqlQuery = Ebean.createSqlQuery(sql);
sqlQuery.setParameter("parent", id);
List<SqlRow> rows = sqlQuery.findList();
List<String> types = new ArrayList<String>(rows.size());
for (SqlRow row : rows)
directions.add(row.getString("type"));
return types;
}
我希望经常调用此方法。我假设这不是很有效。一方面,我在每次调用 getTypes() 时创建一个新的 SqlQuery,即使查询除了参数之外是相同的。
初始化可重用 SqlQuery 的最佳位置在哪里?我试图在父模型的顶部执行此操作,但出现异常,因为我猜模型初始化时数据库尚未准备好。我想我可以在第一次调用 getTypes() 时将其设为 null 并对其进行初始化。这样做的“正确”方法是什么?