id生成规则

本文介绍了Grails框架中主键的配置方法,特别是对于非Integer或Long类型的主键如何设置才能实现正常的数据插入操作。文章通过具体示例展示了如何在Domain类中定义主键属性及其映射规则。

Grails的主键,生成策略可以参考Hibernate的生成策略(http://pumkinchina.iteye.com/admin/blogs/693924)

注意:如果主键非Intger或Long型,需要在Domain中对id类型进行重置

并且需要在mapping增加generator:'assigned',只有这样才可以正常插入数据

 

 

class Book {

  String id

  String bookName

 

  static mapping = {

     table 'Book'

     id column:'bookID',sqlType:'varchar2(20)',generator:'assigned'

 

   }

 

}

 

在Flowable流程引擎中,自定义流程实例ID生成规则可以通过配置`ProcessEngineConfiguration`来实现。默认情况下,Flowable使用UUID作为流程实例的ID生成策略,但该行为可以通过实现`IdGenerator`接口来自定义。 ### 配置自定义ID生成规则 1. **实现 `IdGenerator` 接口** 创建一个类并实现`org.flowable.engine.impl.persistence.entity.IdGenerator`接口,并重写其`getNextId()`方法以提供自定义逻辑。 ```java import org.flowable.engine.impl.persistence.entity.IdGenerator; public class CustomIdGenerator implements IdGenerator { @Override public String getNextId() { // 自定义ID生成逻辑,例如基于时间戳和序列号组合 return "CUSTOM-" + System.currentTimeMillis(); } } ``` 2. **配置到 `ProcessEngineConfiguration`** 在初始化流程引擎时,将自定义的`IdGenerator`注入到`ProcessEngineConfiguration`中。 ```java import org.flowable.engine.ProcessEngine; import org.flowable.engine.ProcessEngineConfiguration; import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration; public class FlowableCustomIdConfig { public static void main(String[] args) { ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration(); cfg.setJdbcUrl("jdbc:h2:mem:flowable;DB_CLOSE_DELAY=-1"); cfg.setJdbcUsername("sa"); cfg.setJdbcPassword(""); cfg.setJdbcDriver("org.h2.Driver"); cfg.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); // 设置自定义ID生成器 cfg.setIdGenerator(new CustomIdGenerator()); ProcessEngine processEngine = cfg.buildProcessEngine(); } } ``` 3. **验证自定义ID生成** 启动流程实例后,可以通过API获取实例ID以确认是否按照预期生成。 ```java import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInstance; public class ProcessInstanceExample { public static void main(String[] args) { RuntimeService runtimeService = processEngine.getRuntimeService(); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("processKey"); System.out.println("Generated Process Instance ID: " + processInstance.getId()); } } ``` 通过上述方式,可以灵活地控制流程实例ID生成规则,以满足特定业务需求,如可读性、前缀标识或与外部系统集成等[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值