如何从redis缓存取回Long(数据类型)值
How to get Long (data type) value back from redis cache
我在 spring 引导应用程序的 redis 缓存中将 userId 存储为 Long,但在检索它时 returns 整数类型并抛出异常
java.lang.Integer cannot be cast to java.lang.Long
下面是我正在使用的代码片段。
@Cacheable(value = CacheConstants.GAUTH_CACHE, key = "#root.target.PASSWORD_SALT.concat(#loginTxt.toString())", unless = "#result == null")
public Long getPasswordSaltFromLoginText(String loginTxt) {
Long userId = null;
if(StringUtils.isNotBlank(loginTxt)) {
userId = profileRepository.getUserIdForPasswordSalt(loginTxt, "PasswordSalt");
}
return userId;
}
我的 Hibernate 查询就是这样的。其中 A.USR_ID
是类型 Long
@Query(nativeQuery = true, value = "select A.USR_ID from user_tbl A, another_table B WHERE A.USR_ID = B.USR_ID AND "
+ " UPPER(A.loginTxt) = UPPER(:loginTxt) "
+ " AND B.prefName=:prefName ")
Long getUserId(@Param("loginTxt") String loginTxt, @Param("prefName") String prefName);
实体 class 是
@Entity
@Table(name="Table1", schema = "Schema_name")
public class Profile {
@Id
@Column(name="USR_Id")
public Long USR_ID;
@Column(name="other_column")
public Long other_column;
@Column(name="other_column2")
public Long other_column2;
}
Redis缓存不支持Long数据类型。所以我将整个配置文件对象存储到 redis 缓存中并使用 getter()
,我能够获得 Long 值。
@Query(nativeQuery = true, value = "select A.USR_ID,A.other_column,A.other_column2 from user_tbl A, another_table B WHERE A.USR_ID = B.USR_ID AND "
+ " UPPER(A.loginTxt) = UPPER(:loginTxt) "
+ " AND B.prefName=:prefName ")
Profile getUserId(@Param("loginTxt") String loginTxt, @Param("prefName") String prefName);
我在 spring 引导应用程序的 redis 缓存中将 userId 存储为 Long,但在检索它时 returns 整数类型并抛出异常
java.lang.Integer cannot be cast to java.lang.Long
下面是我正在使用的代码片段。
@Cacheable(value = CacheConstants.GAUTH_CACHE, key = "#root.target.PASSWORD_SALT.concat(#loginTxt.toString())", unless = "#result == null")
public Long getPasswordSaltFromLoginText(String loginTxt) {
Long userId = null;
if(StringUtils.isNotBlank(loginTxt)) {
userId = profileRepository.getUserIdForPasswordSalt(loginTxt, "PasswordSalt");
}
return userId;
}
我的 Hibernate 查询就是这样的。其中 A.USR_ID
是类型 Long
@Query(nativeQuery = true, value = "select A.USR_ID from user_tbl A, another_table B WHERE A.USR_ID = B.USR_ID AND "
+ " UPPER(A.loginTxt) = UPPER(:loginTxt) "
+ " AND B.prefName=:prefName ")
Long getUserId(@Param("loginTxt") String loginTxt, @Param("prefName") String prefName);
实体 class 是
@Entity
@Table(name="Table1", schema = "Schema_name")
public class Profile {
@Id
@Column(name="USR_Id")
public Long USR_ID;
@Column(name="other_column")
public Long other_column;
@Column(name="other_column2")
public Long other_column2;
}
Redis缓存不支持Long数据类型。所以我将整个配置文件对象存储到 redis 缓存中并使用 getter()
,我能够获得 Long 值。
@Query(nativeQuery = true, value = "select A.USR_ID,A.other_column,A.other_column2 from user_tbl A, another_table B WHERE A.USR_ID = B.USR_ID AND "
+ " UPPER(A.loginTxt) = UPPER(:loginTxt) "
+ " AND B.prefName=:prefName ")
Profile getUserId(@Param("loginTxt") String loginTxt, @Param("prefName") String prefName);