I am currently working on a scenario where i have one centralized database and 2 extended databases in different regions i.e US and UK. Site and TestSubjectPublic are in centralized database whereas Document is in extended databases. TestSubjectPublic has hasOne and BelongsTo relationship with document. I have overridden the getter and setters but for some reason whenever i fetch the data it sends testSubjectResult as null. Following are the domain classes
class Site {
String name
String notes
String email
String phone
String creditCardNumber
String chargeForTest
Boolean isEnabled = true
Byte deleted = 0
Byte taxExempt =1
static hasMany = [testSubjects: TestSubjectPublic]
Float discountAmount
SiteType type
AccountStatus accountStatus=Site.AccountStatus.ACTIVE
Date accountClosingDate
Long fedexTrackingNumber
Date dateFedexNumberAdded
String signUpToken
Integer monthOfMoreThanFifteenTests
Date dateSignUpInviteSent
String vatNumber
String website
static constraints = {
name(unique: true, nullable: false, blank: false)
email(email: true, nullable: false, blank: false)
phone(nullable: true)
notes(maxSize: 5000, nullable: true)
creditCardNumber(nullable: true)
chargeForTest(nullable: true)
accountStatus(inList: AccountStatus.values().toList())
accountClosingDate(nullable: true)
type(inList: SiteType.values().toList())
fedexTrackingNumber(nullable: true)
dateFedexNumberAdded(nullable: true)
signUpToken(nullable: true)
monthOfMoreThanFifteenTests(nullable: true)
dateSignUpInviteSent(nullable: true)
vatNumber(nullable: true)
taxExempt(nullable: false)
website(nullable: true)
discountAmount(nullable: true)
}
enum AccountStatus {
ACTIVE, INACTIVE
}
enum SiteType {
SCHOOL, GENERAL_PRACTITIONER, OTHER
}
static mapping = {
}
}
TestSubjectPublic.groovy
import groovy.transform.ToString
@ToString(includeNames=true)
class TestSubjectPublic {
String emailId
String telephoneNumber
//Specific name/id given in site
String sitePatientId
String dialingCode
//Reference number in QbTest
String qbTestPatientId
TestSubjectStatus status
Byte deleted = 0
static belongsTo = [site: Site]
static constraints = {
site(nullable: true)
sitePatientId(nullable: true)
qbTestPatientId(nullable: true)
dialingCode(nullable: true)
status(inList: TestSubjectStatus.values().toList())
emailId(nullable: true)
telephoneNumber(nullable: true)
}
enum TestSubjectStatus {
NOT_COMPLETED, COMPLETED
}
static mapping = {
}
}
Document.groovy
class Document {
Long testSubjectPublicId
private TestSubjectPublic testSubjectPublic
String filename
byte[] filedata
enum DocType {
RAW,PG,JSON
}
DocType type
Date uploadDate = new Date()
TestSubjectPublic getTestSubjectPublic() {
if (!testSubjectPublic && testSubjectPublicId) {
testSubjectPublic = TestSubjectPublic.get(testSubjectPublicId)
}
testSubjectPublic
}
void setTestSubjectPublic(TestSubjectPublic tsp) {
testSubjectPublicId = tsp.id
}
static transients = ['testSubjectPublic']
static constraints = {
filename(blank:false,nullable:false)
filedata(blank: true, nullable:true, maxSize:1073741824)
testSubjectPublic(nullable: true)
}
static mapping = {
datasources(['virginia','ireland'])
table name: "document"
}
}
When I try to list the Document
listItems = Document.virginia.list(params)
the testSubjectPublic object is null
Here is my datasource.groovy and currently i am on Dev environemnt
development {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/abc838?zeroDateTimeBehavior=convertToNull"
username = "root"
password = "root"
}
dataSource_virginia {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/abc8382?zeroDateTimeBehavior=convertToNull"
username = "root"
password = "root"
}
dataSource_ireland {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/abc838ireland?zeroDateTimeBehavior=convertToNull"
username = "root"
password = "root"
}
}