2017-08-30 5 views
0

他の同様の質問がありましたが、@DynamoDBHashKeyは@DynamoDBIndexHashKeyと誤って書かれていました。DynamoDBインターフェイスがなく、DynamoDBHashKey表記が見つかりませんでした

ソートキーまたはインデックスは不要です。プライマリキーを電子メールとして作成しました。

NewUser.Java

import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBAttribute; 
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBHashKey; 
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBTable; 

mHandler.post(new Runnable() { 
      public void run() { 
       EditText name=(EditText)findViewById(R.id.RegisterName); 
       EditText email=(EditText)findViewById(R.id.Email); 
       Logindatabase login = new Logindatabase(); 
       login.setEmail(email.getText().toString()); 
       login.setName(name.getText().toString()); 
       login.setStatus(); 
       mapper.save(login); //Exception is thrown here 
       Toast.makeText(NewUser.this, "Sent", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

Logindatabase.java

@DynamoDBTable(tableName = "Login") 
public class Logindatabase { 
private String email; 
private String Name; 
private String password; 
private String Status; 
@DynamoDBHashKey(attributeName = "Email") 
public void setEmail(String email){ 
    this.email=email; 
} 
public String getEmail(){return email;} 
@DynamoDBAttribute(attributeName = "Name") 
public void setName(String Name){ 
    this.Name=Name; 
} 
public String getName(){ 
    return Name; 
} 
@DynamoDBAttribute(attributeName = "Status") 
public void setStatus() 
{ 
    Status="Pending"; 
} 
} 

logcat

E/AndroidRuntime: FATAL EXCEPTION: main 
com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMappingException: No interface com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBHashKey annotation found in class class com.example.sherry.empapp.Logindatabase 
                      at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.needAutoGenerateAssignableKey(DynamoDBMapper.java:720) 
                      at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.save(DynamoDBMapper.java:780) 
                      at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.save(DynamoDBMapper.java:688) 
                      at com.example.sherry.empapp.NewUser$1.run(NewUser.java:67) 
                      at android.os.Handler.handleCallback(Handler.java:730) 
                      at android.os.Handler.dispatchMessage(Handler.java:92) 
                      at android.os.Looper.loop(Looper.java:176) 
                      at android.app.ActivityThread.main(ActivityThread.java:5419) 
                      at java.lang.reflect.Method.invokeNative(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:525) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                      at dalvik.system.NativeStart.main(Native Method) 

答えて

0

@DynamoDBHashKey注釈はGETメソッドなく設定方法のために添加されるべきです。

また、ハッシュキーの属性名がDynamoDBテーブルのハッシュキー属性の定義と一致するように(モデルクラス(つまりLogindatabaseで定義されている))、大文字と小文字が区別されていることを確認してください。

@DynamoDBHashKey(attributeName = "email") 
public String getEmail() { 
    return email; 
} 
+0

ありがとうございます!それはうまくいった! :D –

+0

も変数を非公開にします –