我正在使用自定义Spring Data存储库实现/扩展(示例here之一)但我仍然希望使用Optionals进行基本操作 - 如下所示(Mongo或Elasticsearch的示例):
i_overlay = 1
n_bits = 8
# On (60xx,3000) are stored ovelays.
# First is (6000,3000), second (6002,3000), third (6004,3000),
# and so on.
dicom_tag1 = 0x6000 + 0*i_overlay
overlay_raw = data[0x6000,0x3000].value
# On (60xx,0010) and (60xx,0011) is stored overlay size
rows = data[0x6000,0x0010].value # rows = 512
cols = data[0x6000,0x0011].value # cols = 512
decoded_linear = np.zeros(len(overlay_raw)*n_bits)
# Decoding data. Each bit is stored as array element
for i in range(1,len(overlay_raw)):
for k in range (0,n_bits):
byte_as_int = overlay_raw[i]
decoded_linear[i*n_bits + k] = (byte_as_int >> k) & 0b1
overlay = np.reshape(decoded_linear,[rows,cols])
plt.imshow(overlay)
plt.show()
无需在我的DomainRepositoryImpl类(实现DomainRepositoryCustomAnyName)中自行实现该方法。
这有可能吗?
目前我收到一个异常(与我在DomainRepositoryImpl类中实现该方法的异常相同):public interface DomainRepository extends MongoRepository<Domain, Long>, DomainRepositoryCustomAnyName {
Optional<Domain> findOne(Long id);
}
答案 0 :(得分:3)
findOne
,因此我不确定您选择的位置。很多教程都是针对2.x.x之前的spring-data版本。问题是存储库的接口和实现从1.11.8变为2.0.0,因此您的问题可能与版本问题有关。
从过去的某个地方到1.11.8,SimpleJpaRepository有一个方法
public T findOne(ID id)
并支持包装导致Optional
。这适合你的代码。我测试了它,它只是一个简单的例子。当然我没有您的域对象等等。
在2.0.0中,此方法已从SimpleJpaRepository中删除,并替换为
public <S extends T> Optional<S> findOne(Example<S> example)
和
public Optional<T> findById(ID id)
假设您使用的是spring-data-jpa 2.x.x,则有3个选项:
切换回1.11.8版本
将方法签名更改为
Optional<Domain> findOne(Example<Domain> ex);
请改用新方法:
Optional<Domain> findById(Long id);