Hibernate: comment remplacer un attribut de la super classe mappée
Le générique de l'entité, super classe:
@MappedSuperclass
public abstract class GenericEntity {
private Integer id;
public Integer getId() {return id;}
public void setId(Integer id) {this.id = id;}
}
Le pojo:
@Entity
@Table(name = "POJO_ONE")
@SequenceGenerator(name = "HB_SEQ_POJO_ONE", sequenceName = "SEQ_POJO_ONE", allocationSize = 1)
public class PojoOne extends GenericEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HB_SEQ_POJO_ONE")
@Column(name = "ID")
@AttributeOverride(name = "id", column = @Column(name = "ID"))
private Integer id;
@Override
public Integer getId() {return id;}
}
J'essaie d'utiliser ces annotations : @AttributeOverride, @Id, ... mais Ça ne fonctionne pas. Pouvez-vous m'aider?
Je veux remplacer l'attribut "id" pour spécifier un autre nom de la colonne et une séquence par pojo/table.
Quelle est la meilleure façon de le faire?
source d'informationauteur BasicCoder
Vous devez vous connecter pour publier un commentaire.
Essayer cela, au lieu
Pourquoi ne pas annoter les
id
de GenericEntity avec@Id
?Aussi vous ne devriez pas redéfinir
id
mais mettre la@AttributeOverride(name = "id", column = @Column(name = "ID"))
sur la classe plutôt que d'un champ.Edit:
Nous utilisons dans notre classe de base (
package.OurTableGenerator
est notre propre mise en œuvre):Cela nous spécifier un differenc de la taille du bloc et de la séquence par entité/table.
Pour votre propre générateur de tableaux vous pourriez sous-classe
org.hibernate.id.TableGenerator
.