小编use*_*848的帖子

如何在没有ObjectId的情况下将Mongo与Spring数据一起使用

我有一个现有的mongo数据库,其中id(_id)保留为纯字符串。.这是Mongo DB中的示例数据:

{
    "_id" : "528bb0e2e4b0442f1479f1b4",
    "schoolId" : "URDLKYLFJXLWJGR193778316742298",
    "surname" : "Lewis",
    "admissionNumber" : "0347",
    "firstName" : "Martins"
}
Run Code Online (Sandbox Code Playgroud)

我有一个Java对象,其形式为:

public class Student {

@Id
private String id;
private String schoolId;
private String surname;
private String admissionNumber;
private String firstName;
}
Run Code Online (Sandbox Code Playgroud)

与吸气剂和二传手

我也有一个存储库:

public interface StudentRepository extends MongoRepository<Student, String> {

    Student findOneBySurname(String surname);
    Student findOneById(String id);
    Student findOneBySurnameAndFirstName(String surname, String firstName);
}
Run Code Online (Sandbox Code Playgroud)

当我执行一个studentRepository.findAll()时,我能够正确地填充数据库中的所有Student及其所有字段。

当我执行studentRepository.findOne(“ 528bb0e2e4b0442f1479f1b4”)或studentRepository.findOneById)“ 528bb0e2e4b0442f1479f1b4”)时,它返回null

当我调试mongo查询时,我可以看到它正在调用:

2015-11-19 16:06:32.327 DEBUG 87081 --- [           main] o.s.data.mongodb.core.MongoTemplate      : findOne using query: { …
Run Code Online (Sandbox Code Playgroud)

java spring-data spring-data-mongodb spring-boot

6
推荐指数
1
解决办法
4786
查看次数

禁止使用Spring Security和@Secured

我已按如下方式设置Spring Security:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private MongoUserDetailsService userServiceDetails;

@Autowired
private BCryptPasswordEncoder bCryptEncoder;

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/js/**", "/css/**", "/fonts/**");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .csrf().disable()
            .formLogin()
                .defaultSuccessUrl("/index", true)
                .loginPage("/login")
                .permitAll()
                .and()
            .httpBasic()
            .and()
            .logout()
                .permitAll()
                .deleteCookies("JSESSIONID")
                .invalidateHttpSession(true);
}

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth
       .userDetailsService(userServiceDetails)
       .passwordEncoder(bCryptEncoder);
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器上,我有以下内容:

@RequestMapping(method = RequestMethod.GET)
@Secured({"ADMIN"})
public List<Item> getItems(@RequestBody filter …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-boot

1
推荐指数
1
解决办法
1328
查看次数