Comment définir en lecture seule des colonnes en veille prolongée?

Je ne sais pas comment à force de lire des colonnes en mode veille prolongée.

Je tiens à mettre en idgroup en lecture seule colonne. Même si j'ai mis insertable=false et updatable=false, dans le hibernate, SQL, je peux lire:

Hibernate: insert into groups (description, name, account_idaccount, idgroup) values (?, ?, ?, ?) 

mais je voudrais obtenir:

insert into groups (description, name, account_idaccount) values (?, ?, ?) 

Voici mes classes:

@Entity
@Table(name = "groups")
public class Group implements java.io.Serializable {

private static final long serialVersionUID = -2948610975819234753L;
private GroupId id;
private Account account;
private String name;
private String description;

@EmbeddedId
@AttributeOverrides({@AttributeOverride(name = "idgroup", column = @Column(name = "idgroup", insertable = false)),
        @AttributeOverride(name = "accountIdaccount", column = @Column(name = "account_idaccount", nullable = false))})
public GroupId getId() {
    return id;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "account_idaccount", nullable = false, insertable = false, updatable = false)
public Account getAccount() {
    return account;
}

@Column(name = "description", length = 512)
public String getDescription() {
    return description;
}


@Column(name = "name", nullable = false, length = 128)
public String getName() {
    return name;
}
..
}
@Embeddable
public class GroupId implements java.io.Serializable {

private int idgroup;
private int accountIdaccount;

@Column(name = "idgroup", insertable= false, updatable= false)
public int getIdgroup() {
    return this.idgroup;
}


@Column(name = "account_idaccount", nullable = false)
public int getAccountIdaccount() {
    return this.accountIdaccount;
}
..
}

Je voudrais avoir un accès en lecture seule colonne pour idgroup parce que je peux exploiter l'id auto-génération de SGBD, je ne veux pas utiliser la clé de génération automatique en mode veille prolongée, car il n'est pas sécurisée pour le cluster.

  • jetez un oeil à docs.jboss.org/hibernate/orm/3.5/reference/en-US/html/... et ndpsoftware.com/HibernateMappingCheatSheet.html - ils peuvent vous donner des conseils
  • merci Rachel, mais le premier lien renvoie à la lecture uniquement les entités, et je ne vois pas la deuxième utile pour mon cas
  • ah bien. pensé que vous pourriez définir les optimistes de verrouillage de vrai
  • Est-il bon pour vous si hibernate plutôt que de ne pas essayer de persister votre lecture seule valeur juste persistent, toujours la même, ce qu'il a recueillies lors de l'obtention de l'entité de sgbd?
  • le problème est que lorsque je crée une instance de Java et je veux l'enregistrer dans la base de données, même si je ne suis pas d'initialiser le idgroup, hibernate écrit 0 parce que c'est la valeur par défaut pour le type int.
  • Ce n'était pas balisé avec JPA, mais ma conjecture est que vous aurez besoin de spécifier un SequenceGenerator de l'obtenir pour utiliser votre base de données de séquençage, sinon il ne sera pas utilisable dans les relations, etc. Vous êtes également primordial de votre colonne uniquement être insérable=false - quelqu'un a suggéré qu'il soit marquée à la fois insérable+pouvant être mis à jour=false