Casi lo dice en el título. Tengo una clase que se ve algo como esto:Cómo asignar una cadena a una secuencia de base de datos en Hibernate
@Entity
@Table(name="FOO")
public class Foo {
private String theId;
@Id
@Column(name = "FOO_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "fooIdSeq")
@SequenceGenerator(name = "fooIdSeq", sequenceName = "SQ_FOO_ID", allocationSize = 10)
public String getTheId() { return theId; }
public String setTheId(String theId) { this.theId = theId; }
}
El uso de Oracle 11g, la columna de la FOO_ID
es una VARCHAR2
, pero la secuencia SQ_FOO_ID
produce una NUMBER
. La base de datos aparentemente está contento con esto, pero la aplicación necesita poder admitir identificadores no numéricos que pueden haberse insertado en esta columna fuera de la aplicación.
Considerando el código anterior, obtengo un org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String
. ¿Hay alguna manera de hacer este mapeo?
Uso de Hibernate 3.6.