使用 ActiveAndroid 从数据库中获取列表
Get list from database using ActiveAndroid
ActiveAndroid 的新手(以及 android 数据库的整体)。我阅读了他们的文档,但我遇到了一个问题。
我有 Route.class 和 LatLngPosition.class。 Route 由更多 LatLngPosition 节点组成。
所以我的实现是:
@Table(name="Route")
public class Route extends Model {
@Column(name="Name")
private String name;
@Column(name="Time")
private MyTime time;
public Route(String name, MyTime time) {
super();
this.name = name;
this.time = time;
}
public Route(){
super();
}
public List<LatLngPosition> getLatLngList(){
return getMany(LatLngPosition.class, "Route");
}
...
}
我的 LatLngPosition class:
@Table(name="LatLng")
public class LatLngPosition extends Model {
@Column(name = "Latitude")
double latitude;
@Column(name = "Longitude")
double longitude;
@Column(name = "Route", onUpdate = Column.ForeignKeyAction.CASCADE, onDelete = Column.ForeignKeyAction.CASCADE)
Route route;
public LatLngPosition(double latitude, double longitude, Route route) {
super();
this.latitude = latitude;
this.longitude = longitude;
this.route = route;
}
public LatLngPosition(){
super();
}
...
}
我保存了一些数据来测试是否一切正常:
route1 = new Route("first", new MyTime(1,1,10,10));
LatLngPosition pos1 = new LatLngPosition(10,10, route1);
LatLngPosition pos2 = new LatLngPosition(10,15, route1);
pos1.save();
pos2.save();
route1.save();
然后为什么要尝试从数据库中取回它:
Route route = Route.load(Route.class, 1);
我可以调用 route.getName()
,它会 return 正确命名。但是当我调用 route.getLatLngList()
时,我什么也没得到,列表的大小是 0.
为什么这不起作用?我是否实现了正确的 1-N 关系?
这可能看起来有点愚蠢,但是...您是否尝试过在将其与其他 class 一起使用之前保存(插入)该路线?我猜想当你插入时 class 得到它的 id 可以在其他 classes.
中用作外键
route1 = new Route("first", new MyTime(1,1,10,10));
route1.save();
LatLngPosition pos1 = new LatLngPosition(10,10, route1);
LatLngPosition pos2 = new LatLngPosition(10,15, route1);
pos1.save();
pos2.save();
旁注:您确实意识到使用此模型不能有交叉路线,对吗?
ActiveAndroid 的新手(以及 android 数据库的整体)。我阅读了他们的文档,但我遇到了一个问题。
我有 Route.class 和 LatLngPosition.class。 Route 由更多 LatLngPosition 节点组成。
所以我的实现是:
@Table(name="Route")
public class Route extends Model {
@Column(name="Name")
private String name;
@Column(name="Time")
private MyTime time;
public Route(String name, MyTime time) {
super();
this.name = name;
this.time = time;
}
public Route(){
super();
}
public List<LatLngPosition> getLatLngList(){
return getMany(LatLngPosition.class, "Route");
}
...
}
我的 LatLngPosition class:
@Table(name="LatLng")
public class LatLngPosition extends Model {
@Column(name = "Latitude")
double latitude;
@Column(name = "Longitude")
double longitude;
@Column(name = "Route", onUpdate = Column.ForeignKeyAction.CASCADE, onDelete = Column.ForeignKeyAction.CASCADE)
Route route;
public LatLngPosition(double latitude, double longitude, Route route) {
super();
this.latitude = latitude;
this.longitude = longitude;
this.route = route;
}
public LatLngPosition(){
super();
}
...
}
我保存了一些数据来测试是否一切正常:
route1 = new Route("first", new MyTime(1,1,10,10));
LatLngPosition pos1 = new LatLngPosition(10,10, route1);
LatLngPosition pos2 = new LatLngPosition(10,15, route1);
pos1.save();
pos2.save();
route1.save();
然后为什么要尝试从数据库中取回它:
Route route = Route.load(Route.class, 1);
我可以调用 route.getName()
,它会 return 正确命名。但是当我调用 route.getLatLngList()
时,我什么也没得到,列表的大小是 0.
为什么这不起作用?我是否实现了正确的 1-N 关系?
这可能看起来有点愚蠢,但是...您是否尝试过在将其与其他 class 一起使用之前保存(插入)该路线?我猜想当你插入时 class 得到它的 id 可以在其他 classes.
中用作外键
route1 = new Route("first", new MyTime(1,1,10,10));
route1.save();
LatLngPosition pos1 = new LatLngPosition(10,10, route1);
LatLngPosition pos2 = new LatLngPosition(10,15, route1);
pos1.save();
pos2.save();
旁注:您确实意识到使用此模型不能有交叉路线,对吗?