GORM 添加外键值到已经存在的对象
GORM add foreign key value to already exist object
我使用 MySQL 数据库并使用 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
}
}
我已经在数据库中创建了一些地址值,因此外键 Person_ID 为空。
现在我正在尝试更新它并设置与 Person 的关系但没有成功。
出于某种原因,一旦对象保存在数据库中,我就无法更新关系。
我试过的方法之一
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);
有谁知道如何设置与已保存在数据库中的对象的关系?
谢谢
我认为如果没有 joinTable
并且没有反向引用,您将无法拥有 hasMany
。
最简单的解决方案是稍微更改地址 class:
class Address {
static belongsTo = [ person:Person ]
...
}
我使用 MySQL 数据库并使用 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
}
}
我已经在数据库中创建了一些地址值,因此外键 Person_ID 为空。 现在我正在尝试更新它并设置与 Person 的关系但没有成功。 出于某种原因,一旦对象保存在数据库中,我就无法更新关系。
我试过的方法之一
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);
有谁知道如何设置与已保存在数据库中的对象的关系?
谢谢
我认为如果没有 joinTable
并且没有反向引用,您将无法拥有 hasMany
。
最简单的解决方案是稍微更改地址 class:
class Address {
static belongsTo = [ person:Person ]
...
}