NutzCN Logo
问答 多读一关联的写入问题
发布于 2724天前 作者 撒哈拉来的企鹅 1839 次浏览 复制 上一个帖子 下一个帖子
标签:

上次问过一次这个问题了,回去自己又想了一下,又看了一下文档,我觉得比如Pet和Master的关系可以是多对一的,但是NutzDao好像并没有对应的写入支持,而读取可以使用

Pet pet = dao.fetchLinks(dao.fetch(Pet.class, "XiaoBai"), "master");

但是我觉得实际场景中会存在这种情况,比如这个Master又新增了一个Pet,而这个Pet的属性中肯定要有它的Master的信息的,但是NutzDao现有的关联写入中

dao.insertWith(pet,"master");

是将Pet和Master同时写入数据库,这个肯定是不符合需求的,因为数据库中已经存在了这个Master。
还有一种写法是

dao.insertLinks(pet,"master");

这个不会写入Pet,而只写入Master,肯定也是不行的。
所以是不是应该有一个方法(应该算是多对一的关系)可以在不新增Master的情况下新增一个Pet。

2 回复

已知master,新增pet,那插入之前把master设置一下就好了吧?

pet.setMasterId(master.getId());
dao.insert(pet);

之前是我钻牛角尖了,现在这样应该就可以了,在Dao中insert和query我是这样写的

dao.insert(blog);
public List<Blog> getBlogByPage(int page) {
        List<Blog> blogList = dao.query(Blog.class, Cnd.orderBy().desc("id"), dao.createPager(page, 5));
        for (Blog blog : blogList) {
            dao.fetchLinks(blog, null);
        }
        return blogList;
    }
public Blog getBlogById(int id) {
        return dao.fetchLinks(dao.fetch(Blog.class, id), null);
    }

pojo是这么做的

 @Column()
    private int userId;
    @One(target = User.class,field = "userId")
    private User user;
    @Column()
    private int babyId;
    @One(target = Baby.class,field = "babyId")
    private Baby baby;
public int getUserId() {
        User user = this.getUser();
        return user==null?null:user.getId();
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public int getBabyId() {
        Baby baby = this.getBaby();
        return baby==null?null:baby.getId();
    }

    public void setBabyId(int babyId) {
        this.babyId = babyId;
    }
添加回复
请先登陆
回到顶部