nutz在 POJO 中配置多对多照射
在 POJO 中配置多对多映射
在 POJO 类中字段中增加注解 @ManyMany:
@Table("t_food")
public class Food extends Pojo {
@ManyMany(target = Pet.class, relation = "t_pet_food", from = "foodid", to = "petid")
private List<Pet> pets;
public List<Pet> getPets() {
return pets;
}
public void setPets(List<Pet> pets) {
this.pets = pets;
}
}
在 Food 对象中必须存在一个 List<Pet> 类型的字段,你的多对多映射就需要配置在这个字段上。通过 @ManyMany 注解告诉 Nutz.Dao 对象 Food 和 Pet 之间的关系,其中:
target 表示你要映射的对象类型
relation 为中间数据表的表名,它也支持动态表名
from 是中间数据表的字段名,这个字段将储存主对象的主键(上例的 Food 的主键)
to 是中间数据表的字段名,这个字段将储存映射对象的主键(上例的 Pet 的主键)
因此:
数据库中必须存在一个中间表 t_pet_food
该表有一个字段 foodid 对应到 Food 对象的主键
该表有一个字段 petid 对应到 Pet 对象的主键
Nutz.Dao 通过 @ManyMany 这四个属性了解到:
目标的 POJO 类 : Pet
关联表(或者说:中间表):t_pet_food
关联表的 foodid 字段对应到是本 POJO (Food)主键
关联表的 petid 字段对应到是目标 POJO (Pet) 主键
NutDao 是如何连接关联表的
比如,下面的例子
我们有两个 POJO
public class Pet {
@Id
public int id;
@Name
public String name;
}
//-------------------------------
public class Food {
@Id
public int id;
@Name
public String name;
}