2

私はそのようなクラスユーザークラスを作成しました:

public class User {
    /**
     * The list of roles for the user
     */
    private List<String> roles;
    /**
     * The login information
     */
    private ICredentials credentials;

    /*---- the constructors and getters/setters are omitted ---*/
}

ICredentialsインターフェース:

public interface ICredentials {
}

1つの実装:

public class LoginPassword implements ICredentials {
    /**
     * The login of the user
     */
    protected String login;

    /**
     * The password of the user
     */
    protected String password;

    /*---- the constructors and getters/setters are omitted ---*/
}

これで、資格情報からユーザーを見つけるためのリポジトリを作成しました。

public interface MongoUserRepository extends MongoRepository<User, String> {
    List<User> findByCredentials(ICredentials credentials);
    List<User> findByCredentialsEquals(ICredentials credentials);
}

Springはこれをログに記録します(両方のリクエストに対して):org.springframework.data.mongodb.core.MongoTemplate [DEBUG]クエリを使用して検索:{ "credentials" : { "login" : "test" , "password" : "test"}}フィールド:クラスのnull:クラスxxx。コレクション内のユーザー:user

そして、何も見つかりませんでした...「_class」属性が書き込まれていないため、何も見つからなかったようです。私は良い要求は次のようにすべきだと思います: { "credentials" : {"_class":"xxx.LoginPassword", "login" : "test" , "password" : "test"}}

私が間違っていることはありますか?私は何かが足りないのですか?

ありがとう

私はspringmvc3.2.0、spring-data-commons-core 1.4.0、spring-data-mongodb 1.1.1、mongo-java-driver 2.10.1を使用しています(すべてのライブラリを最新バージョンに更新して、確実に更新していますすでに修正されたバグではありませんでしたが、成功しませんでした)

4

2 に答える 2

2

ICredentials インターフェイスの上に @Document(collection = "users") を追加しようとしましたか?

于 2013-02-20T23:25:51.397 に答える