2011-12-30 24 views
9

Tôi đang cố gắng lập bản đồ một phần nhỏ của cơ sở dữ liệu Joomla MySQL bằng GORM với Grails 2.0.lập bản đồ cơ sở dữ liệu mysql hiện có với gorm

Tôi đang đọc một cuốn sách về đối số (Grails) và googling web cho bài viết công nghệ, nhưng tôi vẫn cần tham chiếu tốt để ánh xạ các loại Groovy/Java tới các trường MySQL.

Tôi bắt đầu bằng một bảng đơn giản jos_bannerclient.

class BannerClient { 
    String name 
    String contact 
    String email 
    String notes 
    String editor = '' 

    static constraints = { 
     name(blank:false) 
     contact(nullable:true) 
     email(nullable:true) 
     notes(nullable:true) 
     editor(nullable:true) 
    } 

    static mapping = { 
     datasource 'joomla' 
     table 'jos_bannerclient' 
     id column:'cid', type:'int' 
     notes column:'extrainfo', type:'text' 
     version false 
    } 
} 

Tại thời điểm này kỷ lục được tạo ra trong cơ sở dữ liệu nhưng nếu tôi tiết kiệm miền với failOnError:true tôi nhận được lỗi này: java.lang.IllegalArgumentException.

Tôi gặp sự cố khi ánh xạ trường checked_out TINYINT. Điều duy nhất để GORM xác thực trường đó là khai báo nó là Boolean, tại sao nó không hoạt động với Byte?

Tôi cũng có một số nghi ngờ về cách ánh xạ trường MySQL TIME như checked_out_time.

Tôi cũng đã đọc một phần tài liệu Hibernate, nhưng vẫn không đạt được kiến ​​thức cần thiết để hoàn thành nhiệm vụ này!

Bất cứ ai cũng có thể trợ giúp?

+1

Tôi đã bắt đầu một cuộc trò chuyện mới trên diễn đàn grails cộng đồng về chủ đề này và joomla hơn <-> grails hội nhập, tại http://goo.gl/ARiug – gsscoder

+2

Bạn có thể tìm thấy plugin này hữu ích http://www.grails.org/plugin/db-reverse-engineer –

+0

Bạn có thể cung cấp cho chúng tôi thêm thông tin về bảng gốc không? Bạn đề cập đến 'checked_out' và 'checked_out_time' chẳng hạn. – mathifonseca

Trả lời

2

Bạn đang cho biết "loại" nhưng phải cho biết "sqlType", đó là lý do tôi tin rằng bạn đang gặp sự cố với TINYINT và phải sử dụng Boolean thay vì Byte. Id là một int (thực sự là bigint) theo mặc định, nhưng nó sẽ không phàn nàn với bạn về điều đó trừ khi bạn đang sử dụng dbCreate = "validate" và các giá trị khác là các chuỗi để không nhất thiết phải cung cấp cho bạn sự cố về tính tương thích ghi chú.

static mapping = { 
    datasource 'joomla' 
    table 'jos_bannerclient' 
    id column:'cid', sqlType:'int' 
    notes column:'extrainfo', sqlType:'text' 
    version false 
} 

Đối với vấn đề TIME, tôi có thể chỉ định loại TIMESTAMP mà không gặp sự cố, vì vậy tôi có thể tưởng tượng TIME cũng hoạt động tốt. Tất cả các loại SQL phải được hỗ trợ. Ví dụ:

static mapping = { 
    dateCreated sqlType: 'TIMESTAMP', defaultValue: 'CURRENT_TIMESTAMP' 
} 
Các vấn đề liên quan