4

我是 google-app-engine 的新手,在开发测试应用程序的过程中遇到了一个问题。我正在使用用户的电子邮件 ID 生成密钥以保存用户实体。

Key key = KeyFactory.createKey("email",email );

现在看到数据存储查看器的大部分密钥是相同的,即使我提供相同的电子邮件 ID 来生成密钥,密钥的最后几个字母也会更改。

实际上,我希望使用代码通过密钥获取用户实体。

Entity user = datastore.get(key);

但是由于密钥与以前的密钥不同,我得到noEntityFoundException

我想问的是为什么当输入相同时生成的密钥每次都不同。

另外,如果每次都不同,我怎样才能让它每次都生成相同的密钥,以便我可以直接通过该密钥获取实体?

更多说明:这里是代码 index.jsp 是欢迎文件。我创建了一个具有电子邮件 ID 的用户,例如:abc@example.com。这会将表单详细信息发送到

com.siolabs.tambola.Createuser.java

Createuser servlet 检查电子邮件 ID 是否存在。如果没有,则将信息保存到数据存储区。

在此处创建用户代码

然后登录我在 index.jsp 页面上提交信息。它将请求转发到 com.siolabs.tambola.Login.java 登录 Servlet检查电子邮件 ID 是否存在,如果存在则将请求转发到home.jsp页面。

登录 servlet 代码

问题是登录servlet 在更改时永远找不到电子邮件 ID。

谢谢

4

1 回答 1

0

createKey 函数接受两个字符串。

Key key = KeyFactory.createKey("email",email);

您确定第二个电子邮件参数是字符串吗?很可能是其他类型被错误地转换为字符串。

于 2012-09-18T15:36:19.613 回答