NutzCN Logo
问答 NutzDao 与 Spring集成 并使用自定义生成器 无法注册
发布于 2816天前 作者 firenut 2278 次浏览 复制 上一个帖子 下一个帖子
标签:

Id生成器

@Component
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
public class FireIdGenerator implements RunMethod {

    @Autowired
    private PKGenerator pkGenerator;

    @Override
    public Object run(List<Object> fetchParam) {
        return pkGenerator.generate();
    }

    @Override
    public String fetchSelf() {
        return "sf";
    }
}

Dao

@Configuration
@Repository("dao")
public class XDao extends NutDao {


    @Autowired
    private FireIdGenerator fireIdGenerator;

    private DataSource hikariDataSource;

    private FileSqlManager fileSqlManager;

    private static final String[] SQLS = {
            "user.sql"
    };



//虽然调用但是语句还是id 的value 还是 'NULL'
    @PostConstruct
    public void reg(){
        CustomMake.me().register("sf", fireIdGenerator);
    }


    @Autowired
    public void setHikariDataSource(DataSource hikariDataSource) {
        this.hikariDataSource = hikariDataSource;
        setDataSource(hikariDataSource);
    }

    @Autowired
    public void setFileSqlManager() {
//虽然调用但是语句还是id 的value 还是 'NULL'
        CustomMake.me().register("sf", fireIdGenerator);

        ....
        setSqlManager(fileSqlManager);
    }


}

Entity

@Table("user_info")
public class UserInfoEntity {

    @Id(auto = false)
    @Prev(els=@EL("sf('x')"))
    private Long id;

    @Column("user_name")
    private String userName;

    //getter & setter
}
10 回复

我在 生成器 返回值下断点 并没有进入 不知道 CustomMake 的工厂方法是不是不再Context里面啊

@Override
    public Object run(List<Object> fetchParam) {
        return pkGenerator.generate();
    }

有进run方法吗?

而且只注册一次

走的是自定义sql?得走dao.insert才有意义的

@wendal 没有进run 我上面两个地方 都试过注册一次 两个地方都写就是说明下都进行过什么尝试 但是就是不进run 有些怪异

@firenut fastInsert是不执行@Prev和@Next的

@wendal OK 明白了!多谢

@wendal 过了好久 还有个问题 就是如果insert的话 nutz dao 还会在select max(id) 么

添加回复
请先登陆
回到顶部