我正在使用带有java的GAE。我只是创建一个包含学生和课程关系的示例应用程序。我有很多分支机构和很多学生。每个分支都可以有很多学生,我试过
ObjectifyService.register(Course.class);
ObjectifyService.register(Student.class);
Course course = new Course();
course.setName("ss");
course.setBranch("cs");
ofy().save().entity(course).now();
Student stu = new Student();
stu.setName("student1");
Key<Course> courseKey = new Key<Course>(Course.class, course.getId()); // getting error here
stu.setCourse(courseKey);
System.out.println("saving");
ofy().save().entity(stu).now();
我不确定如何在objecitfy4中定义这种关系。我按照教程http://www.eteration.com/objectify-an-easy-way-to-use-google-datastore/
进行了操作感谢。
答案 0 :(得分:2)
查看Javadocs for Key。而不是公共构造函数,有一个更方便的创建者方法,它需要更少的输入&lt;&gt;泛型:
Key<Course> courseKey = Key.create(Course.class, course.getId());
答案 1 :(得分:1)
您可以使用两个键:
com.google.appengine.api.datastore.Key
和com.googlecode.objectify.Key
。 你可以同时使用Objectify(因为它们最终被转换为低级API)。
两者都没有公共构造函数,因此您无法使用new
。
使用低级别密钥,您可以使用KeyFactory.createKey("Course", course.getId())
。
使用objectify键,您可以使用com.googlecode.objectify.Key.create(Course.class, course.getId())
答案 2 :(得分:0)
当我们使用Objectify时,如果我们需要为条件创建任何Key(KeyFactory.createKey(“Course”,course.getId()),在课程对象中,Id字段应该用index指定。它会正常工作