7

リポジトリを作成するコレクションを指定するにはどうすればよいですか?

私の構成:

<!-- Database -->
<mongo:mongo id="mongoDb" host="localhost" port="27017"/>
<mongo:db-factory id="mongoDbFactory" mongo-ref="mongoDb" dbname="test"/>

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>

<mongo:repositories base-package="de.cochu.springtest.mongodb.repositories"/>

私の文書:

@Document
public class User {

    @Id String id;
    @Indexed String email;

    ...getters and setters omitted...

}

ユーザー コレクションのリポジトリ (...mongodb.repositories パッケージ内にあります)。CrudRepository から拡張しました。

public interface UserRepository extends CrudRepository<User, String>{
    User findByEmail(String email);
}

そして最後に、UserRepository を使用する Spring サーブレットのコントローラー:

@Controller
public class MyController {

    @Autowire UserRepository repo;

    @RequestMapping("/test.html")
    public String something(HttpServletRequest request) {
        User u = userRepository.findByEmail(request.getParameter("email"));
        ...
    }

}

コンソール経由でいくつかのサンプル ユーザーをセットアップしました。mongoTemplate.getCollection("users").count() は正常に動作します。リポジトリは何も見つかりません。

... UserRepository は、コレクション "users" 内のユーザーを検索したいことをどのように認識していますか?/これはリポジトリを使用する正しい方法ですか?

... Intellij IDEA は UserRepository の自動配線を認識しません。エラーが表示されますが、コンパイルされ、例外はスローされません。それについて何かできることはありますか?

4

1 に答える 1

9

ドキュメントのこの部分には、探している答えがあるかもしれません:

http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/#mongo-template.save-insert.collection

ドキュメントの操作に使用されるコレクション名を管理するには、2 つの方法があります。使用されるデフォルトのコレクション名は、小文字で始まるように変更されたクラス名です。したがって、com.test.Person クラスは「person」コレクションに格納されます。@Document アノテーションを使用して別のコレクション名を指定することで、これをカスタマイズできます。選択した MongoTemplate メソッド呼び出しの最後のパラメーターとして独自のコレクション名を指定することで、コレクション名をオーバーライドすることもできます。

于 2012-04-25T18:14:43.783 に答える