2009-08-15 11 views
46

Mam problemy ustawienie typu String, to idzie jakPole tekstowe przy użyciu hibernacji adnotacji

public void setTextDesc(String textDesc) { 
    this.textDesc = textDesc; 
} 

@Column(name="DESC") 
@Lob 
public String getTextDesc() { 
    return textDesc; 
} 

i to nie działa, sprawdziłem schematu mysql i pozostaje varchar (255), I również próbował,

@Column(name="DESC", length="9000") 

lub

@Column(name="DESC") 
@Type(type="text") 

próbuję zrobić typ być TEKST, każdy pomysł będzie również mile widziane!

+0

Które hibernacji wersji używasz? – Oleksii

Odpowiedz

77

Powiedziałeś "Sprawdziłem schemat mysql i pozostaje on varchar (255)" - czy spodziewałeś się, że Hibernate automatycznie zmieni twoją bazę danych? Nie będzie. Nawet jeśli masz zestaw hibernate.hbm2ddl.auto, nie wierzę, że Hibernate zmieniłoby istniejącą definicję kolumny.

Jeśli wygenerowałeś nowy skrypt do tworzenia bazy danych, @Lob powinien generować kolumnę typu "TEKST", jeśli nie określisz wyraźnie długości (lub jeśli nie określisz jej długości w sposób jawny (lub jeśli tak, to mniej niż 65536). zawsze można wymusić, że wyraźnie stwierdzającego typu w @Column adnotacji, choć należy pamiętać, że nie jest to przenośny między bazami danych:

@Column(name="DESC", columnDefinition="TEXT") 
+0

prawe, usunąłem bazę danych za każdym razem, gdy zmieniam adnotacje, przy włączonym hbm2ddl.auto, więc spodziewam się, że zmieni się po ponownym sprawdzeniu (przepraszam za niejednoznaczność). W jakiś sposób, columnDefinition nie działa dla mnie ani. Czy brakuje mi czegoś innego? dzięki za wejście, przy okazji. – bernardw

+0

Określenie 'columnDefinition' jest tak wyraźne, jak tylko możesz uzyskać - musi być coś jeszcze. Czy na pewno twoja skompilowana klasa jest poprawnie pobierana przez Hibernate? Czy jest rozszerzany/rozszerzany przez inną klasę? Nie mogę wymyślić niczego, co mogłoby spowodować to z ręki, ale jeśli możesz opublikować całe źródło dla tej klasy, konfigurację Hibernacji i opisać, jak to robisz, na pewno zobaczę, czy coś na mnie skacze. Czy możesz spróbować dodać do tej klasy fałszywą właściwość i generować schemat jako plik SQL, aby zobaczyć, czy się tam pojawi (kontrola poprawności)? – ChssPly76

+0

W końcu udało mi się to zrobić, umieszczając @Indexed na szczycie klasy, ale nie mogę sam sobie wytłumaczyć, dlaczego to jest ... – bernardw