Google app engine 对象化并以@Id的形式发送电子邮件

Google app engine 对象化并以@Id的形式发送电子邮件,google-app-engine,gwt,objectify,Google App Engine,Gwt,Objectify,我不确定是否以正确的方式使用@Id。 现在我正在使用电子邮件地址作为@Id字段。电子邮件字段将仅在服务器端设置(OAuthService.getCurrentUser.getEmail) 第一个问题:这是个好主意吗 例如,如果我创建了一个Item类,它的父项是RegistrationTO,那么在我的Item类中使用电子邮件地址作为@Id字段是否有意义,或者Item类是否应该有自己的、自动生成的Id和密钥父项来指定关系 Objectify教程建议避免使用@Parent-因此,在这里我认为也没有必要

我不确定是否以正确的方式使用@Id。 现在我正在使用电子邮件地址作为@Id字段。电子邮件字段将仅在服务器端设置(OAuthService.getCurrentUser.getEmail)

第一个问题:这是个好主意吗

例如,如果我创建了一个Item类,它的父项是RegistrationTO,那么在我的Item类中使用电子邮件地址作为@Id字段是否有意义,或者Item类是否应该有自己的、自动生成的Id和密钥父项来指定关系

Objectify教程建议避免使用@Parent-因此,在这里我认为也没有必要。 我是对的

这是我的注册地址:

public class RegistrationTO implements Serializable {
private static final long   serialVersionUID    = 1L;

@NotNull
@Size(min = 5, max = 20)
private String              firstname;

@NotNull
@Size(min = 5, max = 20)
private String              name;

@NotNull
@Size(min = 5, max = 20)
private String              country;

@Id
@NotNull
@Size(min = 5, max = 20)
@Pattern(regexp = "\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\b")
private String              email;

public RegistrationTO() {

}

public RegistrationTO(final String firstname, final String name, final String company) {
    this.firstname = firstname;
    this.name = name;
    this.country = country;
    email = "will be set on server (Oauth)";
}

public String getFirstname() {
    return firstname;
}

public String getName() {
    return name;
}

public String getCountry() {
    return country;
}

public String getEmail() {
    return email;
}

public void setEmail(final String email) {
    this.email = email;
}
  }
项目类别的示例:

public class Item implements Serializable {
private static final long   serialVersionUID    = 1L;

@Id
Long id

//or
//@Id
//String email

Key<RegistrationTO> parent;

String itemno;
    }
公共类项实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
长id
//或
//@身份证
//字符串电子邮件
关键父母;
字符串itemno;
}

提前谢谢你

关于您的问题,电子邮件作为@Id的使用是否正确,因为电子邮件将唯一地标识类的每个对象,那么您就可以了

现在,关于项目类的@Id,如果电子邮件唯一地标识每个对象,则无需创建新的自动生成的@Id。一般来说,选择@Id的标准是唯一地标识该类的所有对象

对于RegistrationTO和Item类之间的关系,仅当需要这些实体为同一实体组时,才使用@Parent注释。此操作的代码:

@Parent
Key<RegistrationTO> parent;
@Parent
关键父母;
否则,请使用“普通”关系(如示例中所示),该关系允许RegistrationTO和Item实体存储在GAE数据存储中的不同实体组中。有关实体组的详细信息,请参阅:


希望有帮助

关于您的问题,电子邮件作为@Id的使用是否正确,因为电子邮件将唯一地标识类的每个对象,那么您就可以了

现在,关于项目类的@Id,如果电子邮件唯一地标识每个对象,则无需创建新的自动生成的@Id。一般来说,选择@Id的标准是唯一地标识该类的所有对象

对于RegistrationTO和Item类之间的关系,仅当需要这些实体为同一实体组时,才使用@Parent注释。此操作的代码:

@Parent
Key<RegistrationTO> parent;
@Parent
关键父母;
否则,请使用“普通”关系(如示例中所示),该关系允许RegistrationTO和Item实体存储在GAE数据存储中的不同实体组中。有关实体组的详细信息,请参阅:

希望有帮助