nutz在 POJO 中配置多对多照射

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;

}