title: DynamoDBMapper Table Generation Creating Only Index
body: <p>I am trying to create tables in DynamoDB using the Java API. </p>
  
  <p>Problem : It creates only the hash key index in the table and no other Attributes.</p>
  
  <pre><code>private void createTable(DynamoDBMapper mapper, AmazonDynamoDBClient amazonDynamoDBClient) {
      CreateTableRequest createTableRequest = mapper.generateCreateTableRequest(InsuranceData.class);
      createTableRequest.setProvisionedThroughput(new ProvisionedThroughput(25L, 25L));
      amazonDynamoDBClient.createTable(createTableRequest);
  }
  
  
   private void run(){
      AmazonDynamoDBClient amazonDynamoDBClient = getDynamoDBLocalClient();
      DynamoDBMapper mapper = new DynamoDBMapper(amazonDynamoDBClient);
      InsuranceData insuranceData = new InsuranceData();
      createTable(mapper,amazonDynamoDBClient);
   }
  </code></pre>
  
  <p><code>POJO class</code></p>
  
  <pre><code>@DynamoDBTable(tableName = "InsuranceData")
  public class InsuranceData {
  
  
  private Integer siteId;
  private String lob;
  private InsuranceLobData multiItemLobData;
  private InsuranceLobData standaloneLobData;
  
  @DynamoDBHashKey(attributeName = "siteId")
  public Integer getSiteId() {
      return siteId;
  }
  
  public void setSiteId(Integer siteId) {
      this.siteId = siteId;
  }
  
  @DynamoDBAttribute(attributeName = "F")
  public String getLob() {
      return lob;
  }
  
  public void setLob(String lob) {
      this.lob = lob;
  }
  
  @DynamoDBTypeConverted(converter = InsuranceLobConverter.class)
  public InsuranceLobData getMultiItemLobData() {
      return multiItemLobData;
  }
  
  public void setMultiItemLobData(InsuranceLobData multiItemLobData) {
      this.multiItemLobData = multiItemLobData;
  }
  
  @DynamoDBTypeConverted(converter = InsuranceLobConverter.class)
  public InsuranceLobData getStandaloneLobData() {
      return standaloneLobData;
  }
  
  public void setStandaloneLobData(InsuranceLobData standaloneLobData) {
      this.standaloneLobData = standaloneLobData;
  }
  }
  </code></pre>
  
  <p><code>Converter</code></p>
  
  <pre><code>public class InsuranceLobConverter implements DynamoDBTypeConverter&lt;String, InsuranceLobData&gt; {
    private final static Gson gson = new Gson();
  
  
  @Override
  public String convert(InsuranceLobData object) {
      return gson.toJson(object);
  }
  
  @Override
  public InsuranceLobData unconvert(String object) {
      return gson.fromJson(object, InsuranceLobData.class);
  }
  
  }
  </code></pre>
  
  <p>Can anybody see the problem here?</p>
  
  <p><strong>This Is Resolved</strong></p>
  
  <p>There was a problem the way I was storing my complex object <code>InsuranceLobData</code>. </p>
  
  <pre><code>@DynamoDBDocument
  public class InsuranceLobData   {
  
  private boolean isActive;
  private Set&lt;String&gt; locale;
  private AbacusData abacusData;
  private boolean isActiveForMobile;
  private boolean isActiveForDesktop;
  
  @Override
  public String toString() {
      return "InsuranceLobData{" +
              "isActive=" + isActive +
              ", locale=" + locale +
              ", abacusData=" + abacusData +
              ", isActiveForMobile=" + isActiveForMobile +
              ", isActiveForDesktop=" + isActiveForDesktop +
              '}';
  }
  
  public InsuranceLobData(){}
  
  
  public InsuranceLobData(boolean isActive, Set&lt;String&gt; locale, AbacusData abacusData, boolean isActiveForMobile, boolean isActiveForDesktop) {
      this.isActive = isActive;
      this.locale = locale;
      this.abacusData = abacusData;
      this.isActiveForMobile = isActiveForMobile;
      this.isActiveForDesktop = isActiveForDesktop;
  }
  
  @DynamoDBAttribute(attributeName = "isActive")
  public boolean isActive() {
      return isActive;
  }
  
  public void setActive(boolean active) {
      isActive = active;
  }
  
  @DynamoDBAttribute(attributeName = "locale")
  public Set&lt;String&gt; getLocale() {
      return locale;
  }
  
  public void setLocale(Set&lt;String&gt; locale) {
      this.locale = locale;
  }
  
  @DynamoDBTypeConvertedJson
  public AbacusData getAbacusData() {
      return abacusData;
  }
  
  public void setAbacusData(AbacusData abacusData) {
      this.abacusData = abacusData;
  }
  
  @DynamoDBAttribute(attributeName = "mobile")
  public boolean isActiveForMobile() {
      return isActiveForMobile;
  }
  public void setActiveForMobile(boolean activeForMobile) {
      isActiveForMobile = activeForMobile;
  }
  
  @DynamoDBAttribute(attributeName = "desktop")
  public boolean isActiveForDesktop() {
      return isActiveForDesktop;
  }
  
  
  public void setActiveForDesktop(boolean activeForDesktop) {
      isActiveForDesktop = activeForDesktop;
  }
  </code></pre>
  
  <p>}</p>
  
  <p><strong>There was no need to add the DynamoDBDocument annotation.     <del>@DynamoDBDocument</del></strong></p>