如何处理需要直接查询的复合主键实体表? #335
Replies: 1 comment 1 reply
-
https://babyfish-ct.gitee.io/jimmer-doc/docs/mapping/advanced/embedded |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
最近接手一个项目,打算使用 Jimmer 简化和统一一下ORM层的代码,不过在编写Entity过程中出现了一个问题,项目数据库中含有符合主键表,这里先给出一个我自己之前使用Jimmer时遇到过的例子,然后再说另一个情况
这是一个小型的云文件存储数据库,文件上传后只在服务器留下唯一的数据,因此文件表中只有文件本身的数据和引用计数。这条记录是以 sha256 作为唯一标识的,意味着只要该值相同就视为同一文件(当然可能有冲突,这种情况就不讨论了)。
目录表则是对标用户的,每个用户都有自己的目录结构,所有用户都会创建一个自己的根目录,该根目录的父目录指向-1
当文件上传时,服务器会先插入记录,随后上传文件,待文件上传后,将文件的引用计数设为1。如果根据sha256查询出记录,即为重复上传,直接将文件引用计数+1,随后向 目录文件表 中插入用户存储文件的记录
sys_directory_file 表代表着用户的目录和文件关系,由于目录本身是划分用户的,所以该表没有用户ID。该表的三个主键表示在同一目录下,同一名称的同一文件只能存在一个。
目前对于 SysDirectoryFile 的定义只停留在了这里了
再往下就无法知道怎么做了,唯一的办法只能是修改数据库。
关于另一个项目,它的表比较简单,主要有五个字段:
key
,type
,cluster_id
,created_time
,modified_time
其中 key 是 namespace, collection, group 三种范围的任意一个ID,可以是命名空间ID,集合ID,组ID。type对应的是类型,cluster_id表示指向的集群。这个表的key和type就没有上述明确的指向了,但是还会涉及到直接操作。
这张表如果要适应jimmer也是很简单,修改表结构新加一列ID,然而这是不可能的
所以有什么办法能够处理这种联合主键的情况吗? @babyfish-ct
Beta Was this translation helpful? Give feedback.
All reactions