2009-12-09 31 views
13

Ai có thể cho tôi biết cách duy trì văn bản dài bằng cách sử dụng JPA (tôi sử dụng PostgreSQL)?JPA và PostqreSQL: sự tồn tại chuỗi dài

Dưới đây là cách tôi định nghĩa một chuỗi rất dài trong lớp học của tôi:

@Lob 
private String body; 

Tuy nhiên, điều này tạo ra một lĩnh vực loại charactervarying (255) trong cơ sở dữ liệu.

Hơn nữa, tôi đã cố gắng sử dụng @column chú thích:

@Column(columnDefinition="TEXT") 
private String body; 

Nhưng tất cả mọi thứ trong vô vọng.

Tôi sẽ rất biết ơn vì đã nhận xét hữu ích về vấn đề này.

+0

Tôi đã làm điều đầu tiên và tôi nhận được OID, LO trong postgresql, cơn ác mộng thực sự – jacktrades

Trả lời

17
@Column(columnDefinition="TEXT") 

thực sự là cách để thực hiện. Có lẽ bạn phải tái tạo DDL của bạn?

+0

Thật không may, có vẻ như chú thích @Column bị bỏ qua hoàn toàn. – emanemos

+0

Vui TEXT ở dạng chữ hoa ... – jacktrades

+0

Kính gửi Jonathan, tôi đã mệt mỏi với đề nghị sửa lỗi ở trên nhưng tôi gặp lỗi. Sự giúp đỡ của bạn sẽ được apreciable. Hãy giúp tôi. http://stackoverflow.com/questions/25094410/hibernate-abstractmethoderror-setcharacterstreamiljava-io-readerjv?noredirect=1#comment39048566_25094410 –

10

Đây là một bài đăng rất cũ, nhưng vì nó có nhiều lượt xem và tôi đã có một câu hỏi tương tự ngay cả hôm nay, tôi đoán đó là một câu trả lời đơn giản.

Giải pháp của tôi cũng tương tự, nhưng tôi thấy rằng tôi cần cột LONGTEXT thay vì:

@Column(columnDefinition="LONGTEXT") 
private String body; 

Và vâng, bạn phải tạo lại nó. Tôi đang sử dụng Play! và tôi phải khởi động lại ứng dụng của mình.

+3

Ý định của bạn là sử dụng LONGTEXT thay vì TEXT? Lý do bị thiếu. –

15

Tôi đã có cùng một trường hợp ngay hôm nay. Chỉ

@Lob 
private String body; 

nên tạo một cột db của typ "text" (PostgreSQL - biến chiều dài không giới hạn) nhưng bảng nên được tái sinh.

+0

Đây là phương pháp đúng, các giải pháp khác đang cho tôi: L ERI: lỗi cú pháp tại hoặc gần "' " –

0

Bạn cũng có thể sử dụng các chú thích xác nhận:

@Size(max=xxx) 

Đó cũng sẽ đóng vai trò là một hạn chế xác nhận của khóa học.

Các vấn đề liên quan