Jak zmapować ciąg znaków do sekwencji DB w trybie hibernacji
Prawie mówi to w tytule. Mam klasę, która wygląda mniej więcej tak:
@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; }
}
Używając Oracle 11g, theFOO_ID
kolumna to aVARCHAR2
, ale sekwencjaSQ_FOO_ID
daje aNUMBER
. Baza danych jest najwyraźniej zadowolona z tego, ale aplikacja musi być w stanie obsługiwać nie-numeryczne identyfikatory, które mogły zostać wstawione do tej kolumny poza aplikacją.
Biorąc pod uwagę powyższy kod, otrzymujęorg.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String
. Czy istnieje sposób na wykonanie tego mapowania?
Korzystanie z Hibernate 3.6.