0

そのため、偶数オブジェクトをロードするときに、会場とアーティストオブジェクトをロードすることができません。基本的に、イベントを作成するときは、特定のアーティストと特定の会場をロードし、イベントのartistKeyフィールドとvenueKeyフィールドにキーを保存します。ただし、ロードしても常にnullになります。私は自分の会場とアーティストに「@Persistent(defaultFetchGroup = "true")」と「@Persistent(mappedBy = "venue")@Element(dependent = "true")」のアノテーションを試しましたが、アーティスト/会場としてはまだ運がありませんイベントをロードするとnullとして表示されます(キーはそこにあります)。defaultFetchGroupを試してみると、親がすでに永続化されている場合はロードできないと表示されます。これは理にかなっていると思います。

    public class Event {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id; 

@Persistent
private Key artistKey;

@Persistent
private Key venueKey;

private Artist artist;

private Venue venue;

//other fields

//getters and setters

}


@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Venue { 

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;

//other fields

//getters and setters

}

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Artist { 

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;

//other fields

//getters and setters
}
4

1 に答える 1

1

リレーション(GAE内)では、それらが所有されている(データストアに所有オブジェクトとともに格納されている)か、所有されていない(他のすべてのデータストアにあるように)かに注意を払う必要があります。後者の場合、リレーションを@Unownedとしてマークできます。GAEには、これに影響を与えるエンティティグループに関するいくつかの制限があります-ドキュメントを参照してください

于 2012-09-30T06:12:55.233 に答える