[ k4rl0 @ 21.05.2012. 19:57 ] @
Pozdrav svima,

Imam jedan problem vezan uz @JoinTable anotaciju i Hibernate. Naime imam klasu koja se zove Kolegij i koja sadrzi field pod nazivom "vrstaKolegija" ciji tip je enumeracija VrstaKolegija.

Klasa izgleda ovako:
Code:

@Entity
@Table(name = "STUDOMAT.KOLEGIJ")
public class Kolegij implements Serializable {

//ostali fieldovi

@Column(name = "VRSTA_KOLEGIJA")
@Enumerated(EnumType.STRING)
@JoinTable(name = "STUDOMAT.VRSTA_KOLEGIJA", joinColumns = @JoinColumn(name = "NAZIV"))
private VrstaKolegija vrstaKolegija;

/getteri, setteri i konstruktori
}


i ovako izgleda enumeracija:

Code:

public enum VrstaKolegija {
    OBAVEZAN,
    NEOBAVEZAN
}


U bazi kod "VRSTA_KOLEGIJA" stoji integer 1 ili 2(obavezan ili neobavezan), pa je prilikom mapiranja potrebno napraviti Joinanje s drugom tablicom u kojoj je naveden string te vrste kolegija.

Do problema dolazi jer prilikom mapiranja kao da Hibernate ignorira anotaciju @JoinTable, tj. uopce ne pokusava napraviti Join kako bi dosao do string vrste kolegija, vec pokusava mapirati
integer sto onda naravno rezultira sljedecom greskom:
Code:
Request processing failed; nested exception is java.lang.IllegalArgumentException: Unknown ordinal value for enum class hr.tvz.springomat.model.VrstaKolegija: 2


Siguran sam da su nazivi tablica i stupaca navedeni ispravno, no anotacija kao da je svaki puta ignorirana, tj. Joinanje se uopce ne dogodi. Napominjem da Hibernate inace odlicno radi,
problem je samo kod Joinanja tablica.


Nadam se da sam uspio objasniti problem i molim za pomoc :)