2012-02-06 35 views
11

içinde rasgele uzunluk dizeleri saklayın İlk olarak Spring Roo ile oluşturulan JPA (Hazırda Bekleme) kullanan bir Spring uygulamasına sahibim. bu nedenle ben @Lob ile alan açıklamalı ettik yüzden, keyfi uzunlukta dizeler saklamak gerekir:Postgresql

public class MyEntity{ 

    @NotNull 
    @Size(min = 2) 
    @Lob 
    private String message; 

    ... 
} 

uygulama localhost Tamam çalışır ama bunu bir dış sunucuya dağıtılabilir ve ettik kodlama ile ilgili bir sorun ortaya çıktı. Bu nedenle PostgreSQL veritabanında saklanan verilerin iyi olup olmadığını kontrol etmek istiyorum. Uygulama tabloları otomatik olarak oluşturur/günceller. Ve bu alanda (mesaj) için türünde bir sütun yarattı: NOT NULL

metin

sorun sadece tablo göz atın veya eğer verileri depolamak sonra o sütunun bir SEÇ yapmak olduğunu Metni göremiyorum ama sayıları. Bu rakamlar, bilginin saklandığı "bir yer" için tanımlayıcılar gibi görünüyor.

Bu tanımlayıcıların tam olarak ne olduğunu ve saklanan verilerin bir pgAdmin veya select yan tümcesinden @Lob columm'de görülebilmesinin herhangi bir yolu varsa, herhangi biri var mı?

JPA'da rasgele uzunluk dizelerini depolamanın daha iyi bir yolu var mı?

Teşekkürler.

+0

DB'ye 'pgAdmin' ile göz atmayı denediniz mi? Metni sütunlarda görüntüleyebilir misiniz? (Bu işe yaramalı) – beerbajay

+0

@beerbajay evet, denedim, ama pgAdmin'e göz atarsam ya da sadece bir SELECT yaparsam aynı şeyi alırım: uygun metin yerine rakamlar (tanımlayıcılar). – Javi

+0

'' NOT NOT '' metni iyi görünüyor, metni görebilmeniz gerekir. Yani bu gerçekten bir bahar/hazırda bekleme/JPA sorunu gibi görünmüyor, ancak bir veritabanı-yanlış yapılandırılmış bir sorundur. – beerbajay

cevap

18

Ben '@Lob' ek açıklama atlayarak tavsiye ve böyle columnDefinition kullanır: bu veritabanını kendisi gezinirken verileri görüntülemeyi yardım ederse

@Column(columnDefinition="TEXT") 

veya

@Column(columnDefinition="LONGTEXT") 

görüyoruz.

+0

teşekkürler. Veriyi uygulamada doğrudan tarama problemini çözmüş ve kodlama problemi de ortadan kalkmıştır. @Lob ile ilgili bir sorun var gibi görünüyor. – Javi

1

@LOB tanımını kullanın, doğru. Tablo, bir OID'yi kataloglara -> postegreSQL-> tabloları -> pg_largeobject tablosuna kaydediyor.

İkili veriler burada verimli bir şekilde saklanır ve JPA verileri doğru bir şekilde alır ve bunu uygulama ayrıntısı olarak saklar.