2013-05-09 27 views
8

Tôi là người mới đến grails và tôi gặp rất nhiều rắc rối khi tham gia hai bảng hiện có thông qua các đối tượng miền đã được tạo ra từ các bảng đó. Có ai biết làm thế nào để làm điều này trong grails? Dưới đây là những gì các bảng trông như thế nào và một ví dụ về cách tôi cần bàn đã kết hợp để xem xét. Xin được cảm ơn trước về sự giúp đỡ.Làm thế nào để làm một bảng đơn giản tham gia vào Grails

Table1{ 

    field1table1 
} 

Table2{ 

    field1table2 

    field2table2 
} 

tôi cần phải tham gia những 2 bàn nơi field1table1 = field1table2 và bảng kết quả tham gia tôi cần phải xem xét như thế này:

JoinedTable{ 

    field1table1 

    field2table2 
} 

Trả lời

6

Nếu tên miền của bạn không có bất kỳ mối quan hệ (hasOne, hasMany, vv) Bạn có thể sử dụng ExecuteQuery để thực hiện các truy vấn HQL một cái gì đó như thế này:

Table1.executeQuery("select * from Table1 t1,Table2 t2 where t1.field1table1 = t2.field2table2") 

Nhìn vào doc

Hy vọng điều này sẽ giúp

+1

Thanks for the help! Điều này làm việc. – southpaul

1

Liên kết bản đồ Grails giữa các đối tượng miền với tham chiếu đối tượng. Điều này sử dụng cột id của bảng để ánh xạ mối quan hệ.

Đối với một mối quan hệ nhiều-nhiều giữa Table1 và Table2, cách điển hình để làm điều này trong grails là như thế này:

TableOne { 
    static hasMany = [tableOnes: TableOne] 
} 

TableTwo { 
    static belongsTo = TableOne 
    static hasMany = [tableTwos: TableTwo] 
} 

Trong trường hợp này, Grails tự động tạo ra một bảng tham gia với các cột cho id của mỗi bảng.

Nếu bạn cần một liên kết tham gia vào các cột không phải id, bạn sẽ phải tự mình quản lý và tham gia các bảng bằng HQL.

+0

Cảm ơn thông tin, trong trường hợp này tôi đã tham gia dựa trên các lĩnh vực không phải là id nên tôi đã kết thúc với HQL. – southpaul

0

Bạn có thể sử dụng một tham gia câu như thế này, điều này làm việc cho tôi withough bất kỳ cấu hình mối quan hệ giữa các bảng

def result = Table1.executeQuery("select t1 from Table1 t1 left join Table2 t2 on t1.fieldtable1 = t2.fieldtable2") 

Hope this helps

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