2015-09-28 96 views
2

我注意到Spring Data Rest存儲庫的行爲方式存在異常。我有兩種類型的實體。在我的應用程序中 - 只讀實體(用於參考數據,如狀態碼,國家代碼,郵政編碼等)。我不想讓最終用戶改變這些。所以我實現了以下ReadOnly存儲庫。Spring Data Rest CrudRepository vs ReadOnlyRepository

@NoRepositoryBean 
public interface ReadOnlyRepository<T, ID extends Serializable> extends Repository<T, ID> { 

    T findOne(ID id); 

    Iterable<T> findAll(); 
} 


@Repository 
public interface StateRepository extends ReadOnlyRepository<State, Long> { 
} 

現在,所有其他實體都與他們有關CrudRepositories因爲他們喜歡引用該州和郵編地址可編輯的實體。

下面是一個例子。

@Repository 
public interface CustomerRepository extends CrudRepository<Address, Long> { 
} 

我有兩個只讀和可編輯的實體控制器,具有直通調用庫。

@RestController 
@RequestMapping(value = "/addresses", produces = MediaType.APPLICATION_JSON_VALUE) 
public class AddressController { 

    @Autowired 
    private AddressRepository addressRepository; 

    @RequestMapping(method = RequestMethod.GET) 
    @ResponseStatus(HttpStatus.OK) 
    public Iterable<Address> getAllAddresses() { 
     return addressRepository.findAll(); 
    } 


    @RequestMapping(value = "/{id}", method = RequestMethod.GET) 
    @ResponseStatus(HttpStatus.OK) 
    public Address getAddress(@PathVariable("id") Long id) { 
     return addressRepository.findOne(id); 
    } 
} 

我有一個相同的控制器相應的國家實體。

有趣的是,對StateController的請求給了我一個HATEOAS json響應,而對Address的請求給了我一個非HATEOAS json響應。是什麼賦予了?

回答

0

我的不好。我的應用程序服務器沒有重新部署某些存儲庫。這是一個非問題。