オブジェクトが空の後できるのではないかと考えてからGoogle Datastore
-
12-09-2019 - |
質問
I 問 お問い合わせいただく前にことが可能であれば、その保存の複雑なクラス編成は、Google Datastore内Google AppEngineのJavaが明らかではなかったほどゆったり流れるすべてのコンテンツの私のクラスが出来ない訳ではなく、多くの場合時間の闘いが始ます。そこではより詳細な質問のコードです。
このようなものは作が未知の理由私はこの準備があり、びっくりしました。問題はきっ省私のオブジェクトを閉db接続を開くものデータが空白にするオブジェクトです。のオブジェクトは、データベースなど、これは構文なのでしょうかんだの選定IDのオブジェクトがあ欄は空欄になっています。残念ながらGoogleなデータベースのビューアにされているデータベースです。私検索 お願い 一つのも展開しております。あ 一つ その 働いていないコンピュータ) です:
コンテンツ
// imports...
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Content{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String id;
@Persistent protected String title;
@Persistent protected String thumbnailURL;
@Persistent protected List<Rating> ratings;
@Persistent protected List<Tag> tags;
@Persistent protected Double price;
@Persistent protected User owner;
// constructor and getters+setters
}
コース
// imports...
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Course extends Content{
@Persistent private Video video;
@Persistent private Document document;
@Persistent private String notes;
@Persistent private String summary;
// constructor and getters+setters
public String toString(){
return "ID: " + this.getId() + " Title: "+this.getTitle()+", Price: "+this.getPrice()+", No. of Tags: "+this.getTags().size();
}
}
ビデオ
// imports...
public class Video extends Content {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
String id;
@Persistent String fileUrl;
// constructor and getters+setters
}
文書
// imports...
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Document extends Content /*AthenaObject*/ {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String id;
@Persistent private String docUrl;
// constructor and getters+setters
}
タグ
// imports...
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Tag{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
private String id;
@Persistent private String tagText;
// constructor and getters+setters
}
コードに続くデータからdatastore:
public Boolean testCourse(){
Boolean isSaved = false;
PersistenceManager pm = PMF.get().getPersistenceManager();
Course c = new Course();
try{
List<Tag> tags = new ArrayList<Tag>();
tags.add(new Tag("tag1"));
tags.add(new Tag("tag2"));
tags.add(new Tag("tag3"));
c.setTitle("Course Title - " + new Date().getTime());
c.setPrice(99.90);
c.setTags(tags);
System.out.println(c.toString()); // **Output:** ID: null Title: Course Title - 1247116147858, Price: 99.9, No. of Tags: 3
pm.makePersistent(c);
Course cAfter = pm.getObjectById(Course.class, KeyFactory.stringToKey(c.getId()));
System.out.println(cAfter.toString()); // **Output:** agptYRtzaWL4gZDb3Vy4ErYFgw Title: Course Title - 1247116147858, Price: 99.9, No. of Tags: 3
isSaved = true;
}
catch(Exception e){
e.printStackTrace();
isSaved = false;
}
finally{
pm.close();
}
pm = PMF.get().getPersistenceManager();
try{
Course cAfterClose = pm.getObjectById(Course.class, KeyFactory.stringToKey(c.getId()));
System.out.println(cAfterClose.toString()); // **Error**: See below
}
catch(Exception e){e.printStackTrace();}
finally{pm.close();}
return isSaved;
}
ここでは、出力:
ID:nullTitle:コース名 1247117389679価格:を99.9,No.の タグ:3 ID:agptYWtzaW1zYXBwcgwLEgZDb3Vyc2UYgawtitle:コース名-1247117389679価格:を99.9,No.タグ:3java.lang.NullPointerExceptionで com.アテナ。サーバーです。団体をいう。コースです。toString(コースです。java:94) 時 com.アテナ。サーバーです。CourseServiceImpl.testCourse(CourseServiceImpl.java:146) 時 ます。して深く考えます。NativeMethodAccessorImpl.invoke0(ネイティブ 方法) ます。して深く考えます。NativeMethodAccessorImpl.呼び出し(NativeMethodAccessorImpl.java:39) 時 ます。して深く考えます。DelegatingMethodAccessorImpl.呼び出し(DelegatingMethodAccessorImpl.java:25) 時 java.lang.して深く考えます。方法。起動(方法です。java:585) 時 com.google.gwt.ユーザーです。サーバーです。rpc.RPC.invokeAndEncodeResponse(RPC.java:527) 時 com.google.gwt.ユーザーです。サーバーです。rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.javaに対して:166) 時 com.google.gwt.ユーザーです。サーバーです。rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86) 時 javax.servlet.http.HttpServlet.サービス(HttpServlet.java:713) 時 javax.servlet.http.HttpServlet.サービス(HttpServlet.java:806) 時 org.mortbay.桟橋.servlet.ServletHolder.ハンドル(ServletHolder.java:487) 時 org.mortbay.桟橋.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093) 時 com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 時 org.mortbay.桟橋.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 時 org.mortbay.桟橋.servlet.ServletHandler.ハンドル(ServletHandler.java:360) 時 org.mortbay.桟橋.ます。SecurityHandler.ハンドル(SecurityHandler.java:216) 時 org.mortbay.桟橋.servlet.SessionHandler.ハンドル(SessionHandler.java:181) 時 org.mortbay.桟橋.ハンドラです。ContextHandler.ハンドル(ContextHandler.java:712) 時 org.mortbay.桟橋.webapp.WebAppContext.ハンドル(WebAppContext.java:405) 時 com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54) 時 org.mortbay.桟橋.ハンドラです。HandlerWrapper.ハンドル(HandlerWrapper.java:139) 時 com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306) 時 org.mortbay.桟橋.ハンドラです。HandlerWrapper.ハンドル(HandlerWrapper.java:139) 時 org.mortbay.桟橋.サーバーです。取扱います。java:313) 時 org.mortbay.桟橋.HttpConnection.handleRequest(HttpConnection.java:506) 時 org.mortbay.桟橋.HttpConnection$RequestHandler.コンテンツ(HttpConnection.java:844) 時 org.mortbay.桟橋.HttpParser.parseNext(HttpParser.java:644) 時 org.mortbay.桟橋.HttpParser.parseAvailable(HttpParser.java:211) 時 org.mortbay.桟橋.HttpConnection.ハンドル(HttpConnection.java:381) 時 org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396) 時 org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
このエラーの文字列はnullに設定されます。その記録がデータベースです。できることが続いている。なぜそのようなデータ空白???
あらゆる提案がなぜこの何が起こっているのかい?
解決
私の運用unownedに多くの関係。基本的にご覧くセットと交換キーオブジェクト。
http://code.google.com/appengine/docs/java/datastore/relationships.html
他のヒント
わからないうのがおもここにいくつかの例がありますのワークショップをお勧めしまでを支援していトラブルシューティング:
最初に、絞り込む問題として小さなテストケースとして可能です。様々な授業を掲載し上がりを見ることでこの問題が重複して2か3のこと。
第二に、なので、しばらく日本にいなどのご主体のdatastoreだということはできいファイルをアップロードアプリappengineを走であり、利用できるかdataviewer):
Query q = pm.newQuery(Course.class);
List<Course> list = (List<Course>) q.execute();
for(Course c: list){
System.out.println("Course id:" + c.getId());
System.out.println("Course title:" + c.getTitle());
//...
}