2012-02-13 33 views
6

lớp miền của tôi trông như thế này:Làm cách nào để Grails ánh xạ trường String của tôi thành Clob?

package com.initech.tps 

class Foo 
{ 
    String stuff 

    static mapping = { 
     // mapping to a legacy table as opposed to letting Grails create it 
     table name: 'FOO', schema: 'TPS' 
     id generator: 'sequence', params: [sequence: 'MY_SEQ'], 
      column: 'FOO_ID', sqlType: 'integer' 
     foo column: 'STUFF' 
    } 

    static constraints = { 
     stuff(nullable: true, maxSize: 40000) 
    } 
} 

Tôi đã theo Grails ấn tượng sẽ tìm ra sử dụng một CLOB thay vì một VARCHAR dựa trên đi qua tôi trong một giá trị đủ lớn cho sự hạn chế MAXSIZE, thay vào đó tôi nhận được thông báo lỗi này trong bảng điều khiển:

org.hibernate.HibernateException: Wrong column type in FOO for column STUFF. 
Found: clob, expected: varchar(40000) 

Tôi có cần sqlType rõ ràng trên ánh xạ không? Tôi đã thử sử dụng các giá trị khác nhau của maxSize và loại bỏ hoàn toàn, không có sự khác biệt. Ngoài ra, thêm sqlType: clob hoặc không hoạt động.

Tôi đang sử dụng Grails 1.3.7, sử dụng IBM DB2-Express.

Trả lời

9

Tìm câu trả lời. Không có gì giống như reading the documentation để tìm nội dung nào đó.

Sự thay đổi mà làm việc được thay đổi bản đồ cho cột clob để

foo column: 'STUFF', type: "text" 
0

Tôi đã sử dụng "dữ liệu Clob" trong dự án Grails của mình và hoạt động tốt.

Bạn có thể sử dụng Clob không?

class Foo 
{ 
Clob stuff 
} 
+0

Đó sẽ là một trong những cách để làm điều đó, tôi đoán. Tôi thực sự muốn thấy một câu trả lời cho phép tôi sử dụng một chuỗi trong đối tượng miền. Phải có một UserType cho việc này. –

3

Tôi biết đó là quá muộn, nhưng đối với tài liệu tham khảo trong tương lai:

bạn chỉ cần có thêm một ánh xạ

static mapping = { stuff type:'text' } 

Và đó là tất cả, grails thay đổi kiểu dữ liệu thành clob hoặc bất kỳ loại nào khác có thể chứa các chuỗi lớn dựa vào cơ sở dữ liệu bạn đang sử dụng.

0

Mặc dù loại cột Oracle DB thực tế là CLOB, type:'text' không được trợ giúp khi dbCreate được đặt thành validate trong DataSource.groovy.

Nhưng công trình này cho Grails của tôi 2.2.0:

static mapping = { stuff sqlType: 'clob' } 
Các vấn đề liên quan