2012-02-25 34 views
6

Tôi có nhắn lớp miền được sử dụng để gửi email đến trang web quản trịChuỗi kích thước trong Grails quá lớn cho lĩnh vực cơ sở dữ liệu

class Message { 

    String name 
    String subject 
    String body 

} 

Tôi nghĩ Chuỗi sẽ không có kích thước tối đa nhưng khi người ta đưa vào thông điệp mà quá lớn thì tôi thấy ngoại lệ trong tệp nhật ký của mình. Bây giờ tôi đặt một ràng buộc để giới hạn kích thước của tin nhắn đến 250 nhưng không thể làm cho nó lớn hơn hoặc người nào khác tiết kiệm không thành công. Tôi đang sử dụng PostgreSQL 9.1.1 và Grails 1.3.7. Có ai biết cách sửa lỗi này không?

Trả lời

8

Bạn có thể chỉ định kiểu dữ liệu sử dụng một hạn chế:

static constraints = { 
    body type:'text' 
} 
+0

Điều này không hiệu quả. Cột được tạo ra dưới dạng 'VARCHAR (250)' –

7

Thêm phần này vào lớp miền của bạn:

static constraints = { 
    body(maxSize:1000) 
} 
0

Thiết type trong constraints khối không hoạt động. Thực hiện các thao tác sau.

static mapping = { 
    body type: 'text' 
} 
0

Kích thước tối đa của VARCHAR được đặt trong cơ sở dữ liệu, Grails không có bất kỳ gì trong vấn đề. Những gì bạn có thể làm là nói cho Grails những gì bạn cần, và nó sẽ tạo ra DDL sử dụng một clob thay vì một chuỗi.

Thay đổi ánh xạ cho cột để sử dụng loại: "văn bản", trong khi thêm maxSize bạn muốn vào các ràng buộc của mình. Grails sẽ chỉ ra rằng nó nên đặt kiểu dữ liệu cột thành clob.

(Thông thường, một trường bộ nhớ sẽ chứa tối đa 4GB, mặc dù một số cơ sở dữ liệu cho phép thay đổi điều đó.)

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