1

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 类:

@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(),它会正确返回名称。但是当我打电话时route.getLatLngList(),我什么也得不到,列表的大小是 0。

为什么这不起作用?我是否正在实施正确的 1-N 关系?

4

1 回答 1

0

这可能看起来有点愚蠢,但是......您是否尝试过在将路线与其他课程一起使用之前保存(插入)路线?我猜当你做插入时,类得到它的 id 可以用作其他类的外键。

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(); 附带说明:您确实意识到使用此模型您不能有相交的路线,是吗?

于 2015-05-06T09:54:50.443 回答