com.something.SuperClass:No se puede utilizar la columna de identidad con la generación de claves <union-subclass> (TABLE_PER_CLASS)
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class SuperClass implements Serializable {
private static final long serialVersionUID = -695503064509648117L;
long confirmationCode;
@Id
@GeneratedValue(strategy = GenerationType.AUTO) // Causes exception!!!
public long getConfirmationCode() {
return confirmationCode;
}
public void setConfirmationCode(long confirmationCode) {
this.confirmationCode = confirmationCode;
}
}
com.something.SubClass:
@Entity
public abstract class Subclass extends SuperClass {
private static final long serialVersionUID = 8623159397061057722L;
String name;
@Column(nullable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Da esta excepción:
Caused by: org.hibernate.MappingException: Cannot use identity column key
generation with <union-subclass> mapping for: com.something.SuperClass
¿Cuál es la mejor y más conveniente forma de generar los ID? No quiero cambiar mi estrategia de herencia.
Solución perfecta. Incluso los foros Hibernate didnot parecen tener esta solución, y que iban en torno al tema https://forum.hibernate.org/viewtopic.php?p=2319244&sid=4493aa54d27d3f81a0e27ecbdda075ae –
¿Este problema es con MySql única o su regularidad como veo uno de un video para la tabla por enfoque de clase y estaba funcionando bien en que se usó postgres – Prashant
Me encontré con esto recientemente cuando probaba una aplicación Dropwizard. En mi caso, lo resolví asegurándome de usar las mismas opciones de configuración utilizadas por DW para crear la fábrica de sesiones. Estoy bastante seguro de que establecer la propiedad "hibernate.id.new_generator_mappings" en true es lo que lo solucionó. Esto es DW 0.7.0, Hibernate 4.3.1, DB era H2. – sfitts