가 나는 몽고의 컬렉션을 나타냅니다 클래스가 "아카이브"라고했다스프링 데이터 - MongoRepository : _id로 바이너리 타입을 사용할 수 있습니까?
@Document(collection = "archive")
public class Message{
@Id
private byte[] messageId;
private String from;
private String to;
// more stuff
}
인터페이스 MessagesRepository가 MongoRepository 확장 : API 호출을 통해
public interface MessagesRepository extends MongoRepository<Message, String>{
}
을, 나는 나을 제공하는 findMessage
요청을 얻을 messageId
in String
. 그런 다음 byte []로 인코딩 한 다음 messagesRepository.findOne()
메서드를 호출해야합니다. ID는 byte[]
입니다.
실패합니다. null
을 반환합니다. 나는 byte []
이 Mongo에 저장되어 있기 때문에 findOne()
메서드 내에서 byte[]
과 다를 것입니다. 동일한 값을 가진 다른 문자열도 다른 byte[]
배열을 생성하기 때문입니다.
어떻게하면됩니까? 또는 바이너리로 _id로 작업하는 것이 실제로 가능합니까?
ID 필드의 논리적 데이터 유형은 무엇입니까? – chrylis
@chrylis : OP는 바이트 []임을 말했다; @ "Sasanka Panguluri": _id에 바이너리/바이트를 사용하여 호의적으로 행동하지 않습니다. 왜 대신 메시지 문자열 또는 그 hashCode를 사용하지 않을까요? – Seismoid
@Seismoid 내가 논리적 인 ** 유형에 대해 질문 한 이유가 있습니다. 즉시 선언 된 타입은'byte []'입니다. 그리고'hashCode'를 사용하는 것은 어리석은 짓입니다. 데이터베이스 ID는 고유해야합니다. – chrylis