Desenvolvimento de anotação do Hibernate de anotações de nível de atributo

Reveja

Desenvolvimento de anotações do Hibernate e outras anotações de nível

Anotação de nível de atributo

@Eu iria

    Obrigatório, o que significa que o atributo mapeado para a chave primária na tabela do banco de dados. Uma classe de entidade pode ter um ou mais atributos mapeados para a chave primária, que podem ser colocados no atributo de chave primária ou no método getXxx ()

    Se vários atributos em uma classe são definidos como a chave primária, a classe de entidade deve implementar a interface serializável

@GeneratedValue (strategy = "")

    ① estratégia = GeneratedValue.AUTO // Selecionar automaticamente de acordo com o banco de dados subjacente (padrão)

@Id //设置为主键
@GeneratedValue //主键自增
private int sid; //学号

    ② estratégia = GeneratedValue.IDENTITY // gerado automaticamente de acordo com o campo de identificação do banco de dados (a chave primária deve ser um inteiro)

    ③ estratégia = GeneratedValue.SEQUENCE // Use a sequência para determinar o valor da chave primária

    ④ estratégia = GeneratedValue.TABLE // Use a tabela especificada para determinar o valor da chave primária (precisa ser combinada com @TableGenerator (name = "nome da tabela especificada"))

 

Se a chave primária for um tipo de string

@Id //设置为主键
@GeneratedValue(generator = "sid")  //由于是主键的字符串类型, 无法使用默认自增, 此时需要指定主键生成器
@GenericGenerator(name = "sid", strategy = "assigned")  //使用hibernate的注解自定义主键生成器, assigned为手动赋值
@Column(length = 8)  //默认的长度为255, 对于主键来说太长, 需要重新指定
private String sid; //学号

 

@Column (atributos podem ser mapeados para colunas)

    nome: Opcional, representa o nome do campo na tabela do banco de dados, a situação padrão é igual ao nome do atributo

    anulável: opcional, indica se o campo pode ficar vazio, o padrão é verdadeiro

    exclusivo: opcional, indica o tamanho do campo, válido apenas para campos do tipo String, o valor padrão é 255 (se for uma chave primária, o valor padrão não pode ser usado)

    inserível: Opcional, indica se o campo deve aparecer na instrução insert quando a estrutura ORM executa a operação de inserção, o padrão é verdadeiro

    atualizável: opcional, indica se o campo deve aparecer na instrução de atualização quando a estrutura ORM executa uma operação de atualização. O padrão é verdadeiro. Este atributo é muito útil para campos que não podem ser alterados depois de criados, como o campo de aniversário (aniversário)

@Embedded (adicionado ao atributo, indicando que esta é uma classe incorporada): Precisa cooperar com @Embeddable

@EmbeddedId (adicionado ao atributo, indicando que esta é uma classe de chave primária composta): Precisa cooperar com @Embeddable

@Id //设置为主键
@EmbeddedId  //标注在属性上
private StudentPK pk; //学号

Classe de chave primária composta StudentsPK

@Embeddable
public class StudentsPK implements Serializable {

    private static final long serialVersionUID = 6632444697825110476L;
    @Column(length = 18)
    private String id;  //身份证号
    @Column(length = 8)
    private String sid;  //学号

    public StudentsPK(String id, String sid) {
        this.id = id;
        this.sid = sid;
    }

    public StudentsPK() {
    }

    public String getId() {
        return id;
    }

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

    public String getSid() {
        return sid;
    }

    public void setSid(String sid) {
        this.sid = sid;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        StudentsPK studentPK = (StudentsPK) o;
        return id.equals(studentPK.id) &&
                sid.equals(studentPK.sid);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, sid);
    }
}

@Transient

    Opcional, isso significa que o atributo não é um mapeamento para um campo da tabela de banco de dados e a estrutura ORM irá ignorar esse atributo. Se um atributo não for um mapeamento de campo na tabela de dados, ele deve ser marcado como @Transient, caso contrário, a estrutura ORM será padronizada para sua anotação @Basic

Acho que você gosta

Origin blog.csdn.net/ip_JL/article/details/85680175
Recomendado
Clasificación