The simplest entity bean:
@Entity
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String name;
}
The table “STUDENT” generated:
Specify table name, column name, nullable, length and unique:
@Entity
@Table(name="T_STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="STU_ID")
private int id;
@Column(name="STU_NAME", nullable=false,
unique=true, length=30)
private String name;
}
Constraints:
CREATE UNIQUE INDEX SQL110902022422451 ON T_STUDENT(STU_NAME);
ColumnDefinition overwrites length
@Entity
@Table(name="T_STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="STU_ID")
private int id;
@Column(name="STU_NAME", nullable=false,
unique=true, columnDefinition="VARCHAR(50)", length=30)
private String name;
}
The table “T_STUDENT” generated:
Integer column and BigDecimal column
@Entity
@Table(name="T_STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="STU_ID")
private int id;
@Column(name="STU_NAME")
private String name;
@Column(name="AGE")
private Integer age;
@Column(name="MONEY")
private BigDecimal money;
}
The table “T_STUDENT” generated:
Specify precision and scale of BigDecimal
(The number 123.45 has a precision of 5 and a scale of 2)
@Entity
@Table(name="T_STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="STU_ID")
private int id;
@Column(name="STU_NAME")
private String name;
@Column(name="AGE")
private Integer age;
@Column(name="MONEY", precision=5, scale=2)
private BigDecimal money;
}
The table “T_STUDENT” generated:
Date column
@Entity
@Table(name="T_STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="STU_ID")
private int id;
@Column(name="STU_NAME")
private String name;
@Column(name="AGE")
private Integer age;
@Column(name="MONEY", precision=5, scale=2)
private BigDecimal money;
@Column(name="START_DATE")
private Date start;
}
The table “T_STUDENT” generated:
Temporal annotation to specify the date type (date, time, timestamp)
@Column(name="START_DATE")
@Temporal(TemporalType.DATE)
private Date start;
The column “START_DATE” generated:
The value:
@Column(name="START_DATE")
@Temporal(TemporalType.TIME)
private Date start;
The column “START_DATE” generated:
The value:
@Column(name="START_DATE")
@Temporal(TemporalType.TIMESTAMP) //This is the default
private Date start;
The column “START_DATE” generated:
The value:
Specify default date, not insertable, not updateable
@Entity
@Table(name="T_STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="STU_ID")
private int id;
@Column(name="STU_NAME")
private String name;
@Column(name="START_DATE",
columnDefinition="DATE DEFAULT CURRENT_DATE",
insertable=false, updatable=false)
private Date start;
}
The table “T_STUDENT” generated:
Blob and Clob
@Entity
@Table(name="T_STUDENT")
public class Student {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="STU_ID")
private int id;
@Column(name="STU_NAME")
private String name;
@Lob
@Column(name="REPORT")
private String report;
@Lob
@Column(name="IMAGE")
private byte[] image;
}
The table “T_STUDENT” generated: