0

これを解決する方法を探すのに何時間も費やしました。子から親を取得しようとすると、id フィールド以外はすべて空になります。意味がありません。それが何かを示す可能性がある場合、私は PlayFramework 2.0.4 を使用しています (フレームワークのひどい選択以外に)。

TRoute.java (親)

@Entity  
@Table(name="routes")
public class TRoute extends Model {

    @Id
    public String route_id;
    public String agency_id;
    @Constraints.Required
    public String route_short_name;
    @Constraints.Required
    public String route_long_name;
    public String route_desc;
    @Constraints.Required
    public String route_type;
    public String route_url;
    public String route_color;
    public String route_text_color;

    @OneToMany(mappedBy="troute")
    public List<Trip> trips;

    public static Finder<String, TRoute> find = new Finder(
            String.class, TRoute.class
    );

}

Trip.java (子)

@Entity  
@Table(name="trips")
public class Trip extends Model {

    @Constraints.Required
    public String route_id;
    @Constraints.Required
    public String service_id;
    @Id
    public String trip_id;
    public String trip_headsign;
    public String direction_id;
    public String block_id;
    public String shape_id;

    @ManyToOne
    @JoinColumn(name="route_id")
    public TRoute troute;

    public static List<Trip> byRouteId(String route_id) {
        List<Trip> trips = 
            Trip.find
            .where().like("route_id", route_id)
            .findList();
        return trips;
    }

    public static Finder<String, Trip> find = new Finder(
            String.class, Trip.class
    );

}
4

1 に答える 1

1

ファインダーには、他のテーブルのプロパティをロードするために使用できるfetch()メソッドがあります。何かのようなもの:

public static List<Trip> byRouteId(String route_id) {
    List<Trip> trips = List<Trip> trips = Trip.find
        .fetch("troute") // fetch the other table's properties here
        .where()
        .like("route_id", route_id)
        .findList();
    return trips;
}
于 2013-01-17T18:26:19.660 に答える