trong Grails, Có cách nào giới hạn kích thước của cột mà enum được ánh xạ hay không. Trong ví dụ sau, tôi muốn các loại cột là char (2)Grails Enum Mapping
enum FooStatus {
BAR('br'), TAR('tr')
final static String id
}
class Foo {
FooStatus status
static constraints = {
status(inList:FooStatus.values()*.id,size:2..2)
}
}
cả inList và kích thước không có bất kỳ tác dụng khi xuất khẩu các lược đồ, các loại cột giữ giá trị mặc định của nó (varch (255)) Có lẽ tôi có thể làm điều đó nếu tôi định nghĩa một UserType mới. Bất kỳ ý tưởng ?
Cảm ơn bạn -ken
Thật khó chịu khi tôi phải thêm vào mọi loại enum một trình gỡ rối và trình cài đặt và cũng khai báo là "tạm thời". Burt, một UserType tùy chỉnh có phải là giải pháp thanh lịch hơn không? – ken
Tạm thời và getter/setter là tùy chọn nếu bạn đồng ý với việc thiết lập id của Enum và chuyển id thành thể hiện enum trong mã gọi. Sự thay đổi thực sự là sự bền bỉ của một String thay vì Enum (nó đã được ngụ ý bởi việc bạn sử dụng inList() vì nó sẽ không hoạt động với Enum anyway). Nhưng chắc chắn, một UserType tùy chỉnh sẽ hoạt động. Bạn muốn trích xuất các công cụ phổ biến vào một lớp cơ sở nếu bạn làm điều này nhiều lần. Sở thích của tôi là giữ mọi thứ trong lớp miền nếu có thể, miễn là những thay đổi đó không quan trọng. –
Burt, có bạn đúng tôi muốn có thể thiết lập và nhận được biến trạng thái như là một enum và cũng có thể lưu cơ sở dữ liệu do đó việc sử dụng id trong enum. Tôi đang nghiêng về phía một người dùng tùy chỉnh loại một cái gì đó dọc theo bản đồ = {loại trạng thái: EnumUserType} – ken