Ich habe eine einfache Klasse wie folgt annotiert:
Code:
@javax.persistence.Entity
public class User implements IsSerializable {
   @javax.persistence.Id
   @javax.persistence.GeneratedValue( strategy = javax.persistence.GenerationType.IDENTITY )
   public long id;
   @javax.persistence.Column(length=80,nullable=false,unique=true)
   @org.hibernate.annotations.Index(name="email")
   public String email;
   @javax.persistence.Column(length=70,nullable=false)
   public String username;
   @javax.persistence.Column(length=70,nullable=false)
   public String password;
   
   public User() {}
   
   public User( String username, String password ) {
      this.username = username;
      this.password = password;
   }
...der Rest kommt hier...
Da ich MySQL benutze sieht das Ergebnis wie folgt aus:
Code:
mysql> describe User;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | bigint(20)  | NO   | PRI | NULL    | auto_increment | 
| email    | varchar(80) | NO   | UNI | NULL    |                | 
| password | varchar(70) | NO   |     | NULL    |                | 
| username | varchar(70) | NO   |     | NULL    |                | 
+----------+-------------+------+-----+---------+----------------+
Ist die Spalte "email" nun indiziert oder nicht? Also ist die Tabelle äquivalent zu einer Tabelle die ich mit folgendem SQL Befehl erstellt hätte:
create table User (id INT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(70) NOT NULL, password VARCHAR(70) NOT NULL, email VARCHAR(80) NOT NULL, PRIMARY KEY(id), INDEX( email(10) ) );
Desweiteren: Wenn email indiziert wird, wieviele Stellen des varchar-Feldes werden denn dann indiziert? In meinem SQL-Befehl direkt sind es ja 10 Zeichen.