Estoy considerando utilizar Anotaciones para definir mis asignaciones de Hibernate pero me he encontrado con un problema: Quiero usar una clase de entidad base para definir campos comunes (incluido el campo ID) pero quiero que diferentes tablas tengan diferentes estrategias de generación de ID:¿Cómo anulo la estrategia GenerationType usando anotaciones de Hibernate/JPA?
@MappedSuperclass
public abstract class Base implements Serializable {
@Id
@Column(name="ID", nullable = false)
private Integer id;
public Integer getId(){return id;}
public void setId(Integer id){this.id = id;}
...
}
@Entity
@Table(name="TABLE_A")
public class TableA extends Base {
// Table_A wants to set an application-defined value for ID
...
}
@Entity
@Table(name="TABLE_B")
public class TableB extends Base {
// How do I specify @GeneratedValue(strategy = AUTO) for ID here?
...
}
¿Hay alguna manera de hacer esto? He intentado que incluye lo siguiente en TableB
pero Hibernate opuesto a mi tener la misma columna dos veces y me parece mal:
@Override // So that we can set Generated strategy
@Id
@GeneratedValue(strategy = AUTO)
public Integer getId() {
return super.getId();
}
¡esa es una manera bastante elegante de hacerlo, funcionó para mí! –