数据访问配置

jmix.data.number-id-cache-size

如果实体的 ID 是 IntegerLong 类型,且带有 @JmixGeneratedValue 注解,当通过 Metadata.create() 在内存中创建实体时,会立即为新实例分配 ID。这个新的 ID 是通过 序列生成 机制从数据库序列中获取下一个值。为了减少对数据库的访问,序列的增量(increment)默认设置为 100,也就是说,框架会在每次调用时会获取这 100 个新的 ID。因此,其实框架是“缓存”了一些 ID 进行分发,直到用完这 100 个 ID 才会再次从数据库获取。

该配置用于定义索引的增量,亦即框架缓存的 ID 范围。

如果数据库已经用一些实体了,而此时需要修改这个配置,请使用新的增量值(与 jmix.data.number-id-cache-size 相等)重新创建已有的索引,索引起始值为已有 ID 的最大值。

如果使用相同的序列在存储过程中创建实体,则强烈建议将此属性的值设置为 0 并使用增量 1 重新创建序列以禁用缓存。

默认值:100

jmix.data.unique-constraint-violation-pattern

处理 违反唯一性约束 机制时使用的一个正则表达式,用于识别数据库抛出的违反唯一性约束异常。当正则表达式能匹配时,会从匹配的第一个非空 group 获取约束名。示例:

jmix.data.unique-constraint-violation-pattern = ERROR: duplicate key value violates unique constraint "(.+)"

通过这个配置可以在任何语言的 DBMS 版本中识别违反唯一性约束的异常。

jmix.data.use-entity-data-store-for-id-sequence

如果配置为 true,则用于生成实体 ID 的序列会与实体保存在同一个数据存储中(实体的 ID 为 IntegerLong 且带 @JmixGeneratedValue 注解)。否则,保存在主数据存储中。

默认值:false

jmix.data.use-read-only-transaction-for-load

设置 DataManager 的所有加载数据的方法都使用只读事务。

默认值:true

jmix.eclipselink.query-cache-enabled

如果配置为 false,则对所有方法禁用 查询缓存,不论方法带了什么参数或注解。

默认值:true