Trong mô hình miền của ứng dụng Grails 2.5.0 của tôi, tôi có hai lớp Income
và Benefit
có các thuộc tính giống nhau. Tôi muốn lưu trữ chúng trong các bảng cơ sở dữ liệu riêng biệt, nhưng di chuyển các trường chung vào một lớp cơ sở. Các mô hình tôi đã đưa ra là:thừa kế trong mô hình miền Grails gây ra các khóa ngoài trùng lặp
class Assessment {
Date dateCreated = new Date()
User user
static hasMany = [incomes: Income, benefits: Benefit]
}
class Benefit extends IncomeSource {}
class Income extends IncomeSource {}
abstract class IncomeSource {
String name
BigDecimal amount
PaymentFrequency frequency
static belongsTo = [assessment: Assessment]
static mapping = {
tablePerHierarchy false
}
}
Điều này làm cho các bảng sau đây để được tạo ra cho mối quan hệ giữa Assessment
và Benefit
Các bảng được tạo ra cho các mối quan hệ giữa Assessment
và Benefit
là (không ngạc nhiên) giống hệt nhau.
Thay vì có một assessment_benefit
tham gia bảng giữa assessment
và benefit
, tôi muốn có một khóa ngoại assessment_id
trong bảng benefit
, do đó loại bỏ sự cần thiết của các bảng tham gia.
Làm cách nào để thay đổi mô hình miền của mình để đạt được điều này?
là phiên bản Grails sử dụng gì? Tôi đã sử dụng Grails 2.4.4 và sử dụng các lớp miền được cung cấp bởi bạn, tức là Đánh giá, Lợi ích, Thu nhập và Nguồn thu nhập. Nó đã không tạo thêm bảng tham gia như bạn đã đề cập. Và nó đã thêm 'evaluation_id' vào các bảng lợi ích, thu nhập và thu nhập_source. Vì vậy, sẽ dễ dàng xác minh nếu bạn cung cấp phiên bản Grails được bạn sử dụng cho các ví dụ này. – Ramsharan
Tôi đang sử dụng Grails 2.5.0 –
Nó có hoạt động như được hiển thị trong câu trả lời không? – dmahapatro