我使用MySQL db并使用grails。我创建了2个表,我有一个列,表示表之间的外键(我使用hasMany)。 这就是我的一般情况:
class Address {
static belongsTo = Person
static mapping = {
street defaultValue: "'s'"
city defaultValue: "'c'"
}
}
和
class Person {
private String firstName
private String lastName
Set<Address> addresses;
static hasMany = [addresses: Address]
static mapping = {
table 'people'
firstName column: 'fn'
addresses lazy: false
addresses column:'Person_ID',joinTable: false
}
}
我已经在db中创建了一些Address值,因此外键 Person_ID 为空。 现在我正在尝试更新它并将关系设置为Person但没有成功。 出于某种原因,一旦将对象保存在db中,我就无法更新关系。
我试过的方法之一
Address a1 = new Address();
a1.setCity("Tester1");
a1.setStreet("Tester1");
Person pdb = new Person(firstName: "SupermanB", lastName: "BatmanB");
pdb.save(flush:true);
pdb.addToAddresses(a1).save(flush:true);
pdb.save(flush:true);
有没有人知道如何设置与已保存在db中的对象的关系?
由于
答案 0 :(得分:0)
我认为没有hasMany
并且没有后退参考我就不能joinTable
。
最简单的解决方案是稍微更改一下Address类:
class Address {
static belongsTo = [ person:Person ]
...
}