我有一份肮脏的工作。
阅读-
所以我们将其包装在一个可选对象中并返回它。
创建-
更新-
删除-
这里有一个ID,指定要更新或删除的对象(数据库中的数据行)。
问题是我不确定DB中是否存在具有此id的对象。
我只想在数据库中有ID为的值时执行更新或删除。
如果没有,我使用了一种引发Throw异常的方法。
但这似乎有些不对劲。
>
仅在检查是否有值后销毁查询后返回的可选项。
但除此之外,我想不出一种方法来知道DB是否真的有值。
写if==null不是更好吗?
下面是我实现的代码。
请建议一个好方法。
public Optional<CallCounselEntity> getCallCounselByUserId(UUID userId, UUID counselId) {
return return callCounselRepository.findByUserId(userId, counselId);
}
public CallCounselEntity updateCallCounsel(CallCounselEntity callCounsel) {
**getCallCounselByUserId(callCounsel.getUserId(),callCounsel.getCounselId()).orElseThrow(() -> new NoSuchElementException("No Search Data"));**
callCounselRepository.save(callCounsel));
return callCounsel;
}
你所说的“可选被销毁”是什么意思?
您需要CallCounconSelentity实体=GetCallCounconSelbyUserId(…)。orElseThrow(…) 。如果代码没有抛出,那么该方法将继续,现在将为实体分配一个非可选值,您可以使用该值进行更新。如果代码抛出,那么,好吧,方法中引用实体的任何剩余代码都将永远无法访问。这就是重点。
因此,总而言之,以下是适用于您的场景的完全有效的代码:
CallCounselEntity entity = getCallCounselByUserId(...).orElseThrow(...)
/* perform your update here */
或者,您可以使用:
getCallCounselByUserId(...).ifPresent(existingCounsel -> {
/* perform your update here */
})
或
getCallCounselByUserId(...).ifPresentOrElse(existingCounsel -> {
/* perform your update here */
}, () -> throw new RuntimeException(...))
如果仍要为不存在的实体引发异常。
我试图用一个自定义验证器将整个设置为无效,这似乎不起作用。。。 下面代码的目标是比较FromGroup的两个实例。 如果它们匹配,则表示未进行任何更改,因此必须无效。 否则它不匹配,这意味着已经进行了更改,所以它必须是有效的 我的变量在我记录时工作正常。它会根据变化变为真或假。 但是我无法使from无效,我已经尝试了很多方法,比如文章和堆栈溢出,这有一个stackblitz,但它似乎也不起作用。
我正在编写一个带有事务回滚的简单json数据库。我需要向一个文件追加一行文本,然后根据追加是否成功,将成功或失败记录到另一个文件。如果需要,第二个文件用于回滚。因此,在继续之前,我需要确定写操作是否成功。 我使用stream.write追加我的文本行,其中包括一个回调,应该验证写操作的成功或失败。 然后我在下面的URL上的NodeJS文档中读到了这个不幸的消息https://nodejs.org/
给定的类值: 我正在尝试使用创建该类的一个新实例: 如果是,我如何使用创建一个新的值对象,在这里我调用的? 谢谢
我是一个新的论坛和Appium/Android自动化,我需要帮助,以验证对象是否存在我的应用程序之前,我采取下一个行动。 信息:[BOOTSTRAP][info]返回结果:{“value”:“未找到元素”,“status”:7} 信息:将命令推送到appium工作队列:[“find”,{“strategy”:“name”,“selector”:“John Doe”,“context”:“”,“mu
那么,我如何使用md5-hash与DirectoryEntry和LDAP进行身份验证呢?!有可能吗?
正如标题所说,我想知道给定的PDF文件是否已经过数字签名。 我用iText签署了它,但我不知道它是否已经签署,以最终辞职或采取其他行动。 有没有简单的方法(可能使用iText)?