2016-12-25 5 views
0
@Transactional 
@Repository 
@RepositoryDefinition(domainClass = UserApi.class, idClass = String.class) 
public interface UserApiRepository{ 

    @Cacheable(value="byUserId",key="#userId") 
    List<UserApi> findByUserId(String userId); 

    @CacheEvict(value="byUserId",key="#userApi.userId") 
    void save(UserApi userApi); 
} 

UsrApi.java春キャッシュ -

"ヌルキーは、キャッシュ操作のために返される"
@Entity 
@Table(name = "user_api") 
public class UserApi { 
    private String id; 
    private String userId; 
    private String api; 
    private String platform; 
    private String apiType; 

    @Id 
    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public String getApi() { 
     return api; 
    } 

    public void setApi(String api) { 
     this.api = api; 
    } 

    public String getPlatform() { 
     return platform; 
    } 

    public void setPlatform(String platform) { 
     this.platform = platform; 
    } 

    public String getApiType() { 
     return apiType; 
    } 

    public void setApiType(String apiType) { 
     this.apiType = apiType; 
    } 
} 

私はkey="#userId"を追加すると、エラーです。

java.lang.IllegalArgumentException: Null key returned for cache operation 
(maybe you are using named params on classes without debug info?) 
Builder[public abstract java.util.List com.awinson.repository.UserApiRepository.findByUserId(java.lang.String)] 
caches=[byUserId] | key='#userId' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false' 

それは私が「save」メソッドを使用するときにキャッシュを更新しないのです。

+0

あなたは 'UserApi'クラスのコードも投稿できますか? – developer

+0

UserApiクラスのコードを投稿しました。 –

+0

ヌルのユーザーIDを持つユーザーがいますか?あなたが 'getId'と' getUserId'の両方を持っているということは心配しています...ユーザの識別子ですか? –

答えて

0

あなたはP0

@Transactional @Repository @RepositoryDe​​finition(domainClass = UserApi.class、idClass = String.class) パブリック・インタフェースUserApiRepository {

@Cacheable(value="byUserId",key="#p0") 
    List<UserApi> findByUserId(String userId); 

    @CacheEvict(value="byUserId",key="#p0.userId") 
    void save(UserApi userApi); 
} 

参照して鍵を交換するために試みることができます Spring Cache Abstraction VS interfaces VS key param ("Null key returned for cache operation" error)

関連する問題