@windwolf
2020-05-20T03:00:47.000000Z
字数 2742
阅读 461
Sailing
以下条目都有一个要求等级. 要求等级分两种: 必须, 建议. 意思就是字面意思, 不解释了.
模块ID和模块名称保持一致, 都采用中文名称.
模块名_实体名
.模块名_实体名Part
.Stateful
接口, 该接口有状态(String), 子状态(String), 工作流实例(Long)三个字段. 实体新建时, 状态统一为[草稿], 后续状态由工作流维护.Set
而不是List
Set
, 而不是List
. 这是为了方便Fetch操作EntityItem
接口, 该接口有一个字段: 项号(Integer), 系统维护这个项号. 并在该根项下保持唯一.VersionedEntity
接口, 改接口有一个实体_版本化实体编码Part
类型的字段, 该Element有编码(String), 版本号(Integer), 是否当前版本(Boolean)三个字段, 一旦启动流程后, 编码不得修改, 版本号和是否当前版本由版本号控制策略维护.实体_版本化实体引用Part
这个Element来引用, 而不是id. 如果一个单据的子实体引用了另一个受版本号控制的子实体, 那么要通过实体_版本化实体项目引用Part
, 而不是id来引用.@EqualsAndHashCode(callSuper = true,exclude = {"XXX", "XXX"})
, 用于防止计算HashCode时候的死循环.@EqualsAndHashCode(callSuper = true, exclude = {"一对一", "一对多", "多对一"})
和@ToString(callSuper = true, exclude = {"一对一", "一对多", "多对一"})
, 其中exclude排除掉一对一, 多对一, 一对多的字段.FieldType | 实体字段类型 | 数据库类型 | 备注 |
---|---|---|---|
string50 | String 或者 枚举 | nvarchar(50) | 如果是枚举类型, 加上@Enumerated(EnumType.STRING) |
string255 | String | nvarchar(255) | |
string512 | String | nvarchar(512) | |
string1024 | String | nvarchar(1024) | |
text | String | nvarchar(MAX) | |
decimal2 | BigDecimal | decimal(14, 2) | |
decimal3 | BigDecimal | decimal(15, 3) | |
decimal4 | BigDecimal | decimal(16, 4) | |
decimal5 | BigDecimal | decimal(17, 5) | |
decimal6 | BigDecimal | decimal(18, 6) | |
decimal7 | BigDecimal | decimal(19, 7) | |
decimal8 | BigDecimal | decimal(20, 8) | |
decimal9 | BigDecimal | decimal(21, 9) | |
decimal10 | BigDecimal | decimal(22, 10) | |
bool | Boolean | nchar(1) | 实体字段加上@Convert(converter = BooleanToYNCharConverter.class) |
id | Long | bigint | |
integer | Integer | int | |
datetime | LocalDateTime | datetime | |
date | LocalDate | datetime | |
version | Long | bigint | 由框架维护 |
blob | Byte[] | varbinary(MAX) | 加上@Lob , 强烈建议加上@Basic(fetch = FetchType.lazy) |
idRef | Long | bigint | 主要用于没有直接建立外键关系, 但需要表达外键的含义的实体字段 |
codeRef | String | nvarchar(50) | 主要用于没有直接建立外键关系, 但需要表达外键的含义的实体字段 |
- 建议 不要依赖Spring Data的表结构自动生成, 此自动生成机制十分保守, 多数情况下, 对数据库的更改无能为力. 如果, 希望框架能在第一次生成中产生正确的表结构, 那么必须加上@Column(columnDefinition = 'XXX')
- 必须 业务含义上不为空的字段, 在数据库中加上不为空, 在实体字段上加上@Basic(optional = false)
. 此举是为了提高索引效率
@CacheEvict
默认情况在方法执行之后清缓存, 如果方法抛出异常, 那么缓存不会清空. 如果无论如何都要清缓存, 加上beforeInvocation=true
在Tag页右键菜单点击刷新后出发, 切换抬头后也会触发