single per joined another java hibernate annotations override mappedsuperclass

java - joined - Hibernar: Cómo anular un atributo de una súper clase asignada



mappedsuperclass jpa (2)

¿Por qué no anotar la id de GenericEntity con @Id ? Tampoco debe redefinir el id sino que debe colocar @AttributeOverride(name = "id", column = @Column(name = "ID")) en la clase en lugar de en un campo.

Editar:

Estamos usando esto en nuestra clase base ( package.OurTableGenerator es nuestra propia implementación):

@GeneratedValue ( generator = "ourTableGenerator", strategy = GenerationType.TABLE ) @GenericGenerator ( name = "ourTableGenerator", strategy = "package.OurTableGenerator", parameters = { @Parameter ( name = OurTableGenerator.TABLE_PARAM, value = "t_sequence" ), @Parameter ( name = OurTableGenerator.SEGMENT_COLUMN_PARAM, value = "c_entity" ), @Parameter ( name = OurTableGenerator.VALUE_COLUMN_PARAM, value = "c_nextHi" ), @Parameter ( name = OurTableGenerator.INCREMENT_SIZE_COLUMN_PARAM, value = "c_blocksize" ) } ) @Id @Column(name = "c_uid") private Long uid;

Esto nos permite especificar una secuencia y un tamaño de bloque diferentes por entidad / tabla.

Para su propio generador de tablas podría subclase org.hibernate.id.TableGenerator .

La entidad genérica, super clase:

@MappedSuperclass public abstract class GenericEntity { private Integer id; public Integer getId() {return id;} public void setId(Integer id) {this.id = id;} }

El 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;} }

Intento usar estas anotaciones: @AttributeOverride, @Id, ... pero no funciona. ¿Me puedes ayudar? Quiero anular el atributo "id" para especificar otro nombre de columna y una secuencia por pojo / tabla. ¿Cuál es la mejor manera de hacer eso?


Intenta esto, en su lugar

@MappedSuperclass public abstract class GenericEntity { private Integer id; ... public Integer getId() {return id;} public void setId(Integer id) {this.id = id;} } @Entity @Table(name = "POJO_ONE") @SequenceGenerator(name = "HB_SEQ_POJO_ONE", sequenceName = "SEQ_POJO_ONE", allocationSize = 1) @AttributeOverride(name = "id", column = @Column(name = "ID")) public class PojoOne extends GenericEntity { // we should not define id here again ... @Override @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "HB_SEQ_POJO_ONE") public Integer getId() {return id;} }