Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何在使用crudepository#getOne()时检查是否存在_Spring_Hibernate_Spring Boot_Jpa_Spring Data Jpa - Fatal编程技术网

Spring 如何在使用crudepository#getOne()时检查是否存在

Spring 如何在使用crudepository#getOne()时检查是否存在,spring,hibernate,spring-boot,jpa,spring-data-jpa,Spring,Hibernate,Spring Boot,Jpa,Spring Data Jpa,我有一个文档实体。要编辑文档,必须获取文档锁 编辑文档的请求API如下所示edit=true允许使用“FOR UPDATE”从数据库中获取记录 GET /api/document/123?edit=true 在后端,我们这样做(当然过于简化) Document Document=documentRepository.getOne(documentId)/使用findById或existsById。是的,他们确实访问数据库。这就是重点,不是吗 getOne明确用于您已经知道实体存在并且只需要将i

我有一个
文档
实体。要编辑文档,必须获取
文档锁

编辑文档的请求API如下所示
edit=true
允许使用“FOR UPDATE”从数据库中获取记录

GET /api/document/123?edit=true
在后端,我们这样做(当然过于简化)


Document Document=documentRepository.getOne(documentId)/使用
findById
existsById
。是的,他们确实访问数据库。这就是重点,不是吗


getOne
明确用于您已经知道实体存在并且只需要将id包装在与实体相似的东西中的用例。

使用
findById
existsById
。是的,他们确实访问数据库。这就是重点,不是吗


getOne
明确适用于您已经知道实体存在并且只需要将id包装在看起来像实体的东西中的用例。

如果您的存储库返回值或其事务管理令人困惑,您应该检查您的存储库代码和实体类设计,甚至检查用于查询的会话配置,甚至检查您的数据存储设计,因为如果您的存储库返回值或其事务管理混乱,则此代码片段中的所有内容看起来都很好,您应该检查您的存储库代码和实体类设计,甚至检查用于查询的会话配置,甚至检查您的数据存储设计,因为此代码片段中的所有内容看起来都很好

您的意思是无法使用
getOne()
返回的代理对象检查是否存在。从技术上讲,您可以访问一个非id属性并检查是否得到一个
LazyLoadingException
,但这会非常糟糕。您的意思是,无法使用
getOne()
返回的代理对象检查是否存在。从技术上讲,你可以访问一个非id属性,然后检查你是否得到了一个
LazyLoadingException
,但那会非常难看。
Document document = documentRepository.getOne(documentId)    //<--- (1)

if(document == null){                                        //<--- (2) This is always false
   //Throw exception
}

DocumentLock dl = DocumentLock.builder()
                  .lockedBy(user)
                  .lockedAt(NOW)
                  .document(document)
                  .build()

documentLockRepository.save(dl);