我已经代表一个蒙戈集合类名为“存档”Spring Data- MongoRepository:我们可以使用_id作为二进制类型吗?
@Document(collection = "archive")
public class Message{
@Id
private byte[] messageId;
private String from;
private String to;
// more stuff
}
接口MessagesRepository扩展MongoRepository:
public interface MessagesRepository extends MongoRepository<Message, String>{
}
通过API调用,我得到一个findMessage
要求,这给了我一个messageId
于String
。然后我需要将它编码为byte [],然后调用messagesRepository.findOne()
方法。 (请记住ID是byte[]
)。
它失败。它返回null
。我猜想因为存储在Mongo中的byte []
将与findOne()
方法中的byte[]
不同,因为即使值相同的不同字符串也会产生不同的byte[]
阵列。
我该如何做这项工作?或者真的可以在二进制文件中使用_id?
什么是ID字段的逻辑数据类型? – chrylis 2014-08-29 22:14:43
@chrylis:OP表示它是byte []; @“Sasanka Panguluri”:你没有为_id使用二进制/字节来帮助自己;为什么不使用消息String或其hashCode呢? – Seismoid 2014-08-29 22:20:31
@Seismoid有一个原因,我问**的逻辑**类型。很明显,立即声明的类型是'byte []'。使用'hashCode'是荒谬的;数据库ID必须是唯一的。 – chrylis 2014-08-29 22:22:23