title: error: annotation type not applicable to this kind of declaration
body: <p>I'm trying to compile a Java web app that I'm writing, and I"m getting compile errors that I'm not sure what to do with. From the googling I've done, I found <a href="https://stackoverflow.com/questions/9678846/annotation-type-not-applicable-to-this-kind-of-declaration">this</a> SO question, but the asker is using EJB, while my error is in a JPA entity class.</p>
  
  <p>Here's the maven build error.</p>
  
  <pre><code>[INFO] ------------------------------------------------------------------------
  [INFO] BUILD FAILURE
  [INFO] ------------------------------------------------------------------------
  [INFO] Total time: 3.988s
  [INFO] Finished at: Mon Jun 24 02:39:51 UTC 2013
  [INFO] Final Memory: 15M/247M
  [INFO] ------------------------------------------------------------------------
  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project donebox: Compilation failure: Compilation failure:
  [ERROR] /home/cl-server/builder/tomcat-ide-builder/temp/build-1236514164814552082/src/main/java/net/donebox/accounts/User.java:[50,4] error: annotation type not applicable to this kind of declaration
  [ERROR] /home/cl-server/builder/tomcat-ide-builder/temp/build-1236514164814552082/src/main/java/net/donebox/accounts/User.java:[60,4] error: annotation type not applicable to this kind of declaration
  [ERROR] /home/cl-server/builder/tomcat-ide-builder/temp/build-1236514164814552082/src/main/java/net/donebox/accounts/Role.java:[53,4] error: annotation type not applicable to this kind of declaration
  [ERROR] -&gt; [Help 1]
  [ERROR] 
  [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
  [ERROR] Re-run Maven using the -X switch to enable full debug logging.
  [ERROR] 
  [ERROR] For more information about the errors and possible solutions, please read the following articles:
  [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
  </code></pre>
  
  <p>And here's my User class file.</p>
  
  <pre><code>package net.donebox.accounts;
  import java.io.Serializable;
  import java.util.UUID;
  import java.util.HashSet;
  import java.util.Set;
  
  import javax.persistence.Basic;
  import javax.persistence.Cacheable;
  import javax.persistence.Entity;
  import javax.persistence.Id;
  import javax.persistence.GeneratedValue;
  import javax.persistence.Table;
  import javax.persistence.Column;
  import javax.persistence.Index;
  import javax.persistence.ManyToMany;
  import javax.persistence.JoinTable;
  
  import org.apache.shiro.crypto.hash.Sha256Hash;
  import org.apache.shiro.crypto.RandomNumberGenerator;
  import org.apache.shiro.crypto.SecureRandomNumberGenerator;
  
  @Entity
  @Table(name="users")
  public class User {
  
      private UUID id;
      private String username;
      private String email;
      private String password;
      private Set&lt;Role&gt; roles = new HashSet&lt;Role&gt;();
  
  
      @Id
      @GeneratedValue
      public UUID getId() {
          return id;
      }
  
      public void setId() {
          this.id = UUID.randomUUID();
      }
  
      /**
       * Returns the username associated with this user account;
       *
       * @return the username associated with this user account;
       */
      @Basic
      @Column(length=100)
      @Index(name="idx_users_username", columnList="username") //Error here.
      public String getUsername() {
          return username;
      }
  
      public void setUsername(String username) {
          this.username = username;
      }
  
      @Basic
      @Index(name="idx_users_email", columnList="email") // And here.
      public String getEmail() {
          return email;
      }
  
      public void setEmail(String email) {
          this.email = email;
      }
  
      /**
       * Returns the password for this user.
       *
       * @return this user's password
       */
      @Basic(optional=false)
      @Column(length=255)
      public String getPassword() {
          return password;
      }
  
      public void setPassword(String password) {
          this.password = password;
      }
  
  
      @ManyToMany
      @JoinTable(name="users_roles")
      public Set&lt;Role&gt; getRoles() {
          return roles;
      }
  
      public void setRoles(Set&lt;Role&gt; roles) {
          this.roles = roles;
      }
  
  }
  </code></pre>
  
  <p>I looked at the javax.persistence.Index JavaDoc, and I have the declaration correct, so I'm stumped here, Does someone know what I'm doing wrong? Thank you for your time and consideration.</p>