0
嗨,我使用的是springboot的mongodb,無法根據@DBRef獲取記錄。我之情況是:如何在mongodb的collection中使用@DBRef獲取記錄?
我有AuthenticationToken收集和用戶收集如下:
{
"_id" : ObjectId("556bdfc2ccf2e6509f8a2849"),
"_class" : "com.samepinch.domain.user.AuthenticationToken",
"token" : "2efd1cfe-2f2f-4163-b500-bac6e4654287",
"createdDate" : ISODate("2015-06-01T04:29:54.364Z"),
"updatedDate" : ISODate("2015-06-01T04:29:54.364Z"),
"user" : DBRef("users", ObjectId("556bdfc2ccf2e6509f8a2848"))
}
和用戶
{
"_id" : ObjectId("556bdfc2ccf2e6509f8a2848"),
"_class" : "com.samepinch.domain.user.User",
"age" : 0,
"username" : "[email protected]",
"roles" : [
"ROLE_USER"
],
"firstName" : "abc",
"lastName" : "mno",
"email" : "[email protected]",
"gender" : "male",
"isAccountLocked" : false,
"prefAgeFrom" : 0,
"prefAgeTo" : 0,
"notificationNewMatch" : true,
"notificationMessage" : true,
"createdDate" : ISODate("2015-06-01T04:29:54.325Z"),
"updatedDate" : ISODate("2015-06-01T04:29:54.325Z")
}
現在我想獲得用戶ID的認證收集的基礎上的身份驗證令牌。
我正在使用Mongo Repository根據用戶標識獲取AuthenticationToken,但它不工作。
要提取AuthenticationToken
步驟1
public AuthenticationToken findByUserId(String userId){
ObjectId objId = new ObjectId(userId);
return authRepository.findByUserId(objId);
}
步驟2
public interface AuthenticationTokenRepository extends MongoRepository<AuthenticationToken, String> {
AuthenticationToken save(AuthenticationToken token);
AuthenticationToken findByToken(String token);
@Query("{'user._id' : ?0}")
AuthenticationToken findByUserId(ObjectId objId);
}
我按照上述步驟,從DB獲取AuthenticationToken但得到空。以前它工作的很好,當我沒有使用認證域中的用戶時使用@DBRef。
AuthenticationToken
public class AuthenticationToken extends BaseEntity{
@JsonProperty
String token;
@DBRef
User user;
public AuthenticationToken(String token,User user){
this.token = token;
this.user = user;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
感謝@Prabjot它現在的工作:) – Qasim