hibernate-annotations——@Column


今日はHibernateの@Column注記を見てきました
@Column(    name="columnName";                         1    boolean unique() default false;              2    boolean nullable() default true;              3    boolean insertable() default true;           4    boolean updatable() default true;           5    String columnDefinition() default "";      6    String table() default "";                        7    int length() default 255;                        8    int precision() default 0;                        9
    int scale() default 0;                             10
)
7、9、10以外は分かりやすいです.
ここで9と10はdecimalの精度を設定し、FloatとDoubleタイプのフィールドの定義を開始し、この2つのタイプのフィールドに@Column注記を使用すると、結果として9と10は機能しません.最後にBigDecimalタイプを使用すると9と10が機能することが分かった.columnDefinition定義タイプ(@Column(columnDefinition="decimal"))を自分で使用する場合は、精度を自分で定義する必要があり、9と10は機能しません.同様に、DoubleとFloatタイプを使用するとMySQLでdoubleとfloatが生成され、機能しません.
7は@SecondaryTable注記とともに使用します.
import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.SecondaryTable;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @author lan 2010-8-23
 */
@Entity
@Table(name="student")
@SecondaryTable(name="SName")
public class Student {

    private Integer id;
    private String name;
    private Integer age;
    private Date birthday;
    private String resume;
    private BigDecimal height;
    private Double weight;

    @Id
    @GeneratedValue
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(table="SName")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Temporal(TemporalType.DATE)
    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Lob
    @Column(insertable=false)
    public String getResume() {
        return resume;
    }

    public void setResume(String resume) {
        this.resume = resume;
    }

    @Column(precision=5,scale=2)
    public BigDecimal getHeight() {
        return height;
    }
    
    public void setHeight(BigDecimal height) {
        this.height = height;
    }
  

    @Column(precision=5,scale=2)
    public Double getWeight() {
        return weight;
    }


    public void setWeight(Double weight) {
        this.weight = weight;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + ", birthday=" + birthday + ", resume="
                + resume + ", height=" + height + ", weight=" + weight + "]";
    }

}

 
本文はただ自分のメモとして、私のhibernateに対する理解はまだ浅くて、各位の大牛の指導を歓迎します.