1

ActiveAndroid の新機能 (および Android データベース全体の新機能)。ドキュメントを読みましたが、問題が 1 つあります。

Route.class と LatLngPosition.class があります。ルートは、より多くの 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 に答える