【发布时间】:2014-02-26 12:35:53
【问题描述】:
来了。日志显示没有返回任何记录。
14:10:01.331 TRACE JdbcCoordinatorImpl - 注册语句 [SELECT inspector.* FROM inspector inspector WHERE inspector.mailState IN (?, ?)] 14:10:01.331 TRACE JdbcCoordinatorImpl - 注册最后一个查询语句 [SELECT inspector.* FROM inspector inspector WHERE inspector.mailState IN (?, ?)] 14:10:01.331 调试加载程序-bindNamedParameters() 未读-> stateList_0_ [1] 14:10:01.332 TRACE BasicBinder - 绑定参数 [1] 作为 [VARBINARY] - [未读] 14:10:01.336 TRACE SerializationHelper - 开始序列化对象 [未读] 14:10:01.336 调试加载器 - bindNamedParameters() BLOCK_FAILURE -> stateList_1_ [2] 14:10:01.337 TRACE BasicBinder - 绑定参数 [2] 作为 [VARBINARY] - [BLOCK_FAILURE] 14:10:01.337 TRACE SerializationHelper - 开始序列化对象 [BLOCK_FAILURE] 14:10:01.337 TRACE 加载程序 - 绑定 [3] 参数总计 14:10:01.338 TRACE JdbcCoordinatorImpl - 注册结果集 [com.mysql.jdbc.JDBC4ResultSet@41f0527f] 14:10:01.338 TRACE Loader - 处理结果集 14:10:01.338 TRACE Loader - 完成处理结果集(0 行) 14:10:01.338 TRACE Loader - 水合物体总数:0
表的mailState 列中肯定有一条记录为'UNREAD'。使用spring data jpa的JpaRepository有如下代码
@Query(value = "SELECT inspector.* FROM inspector inspector WHERE inspector.mailState IN :stateList", nativeQuery = true)
List<Inspector> findAllByState(@Param("stateList") List<MailState> stateList);
我的 Inspector 类就是这样
@Entity
@Table(name = "inspector")
public class Inspector {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Enumerated(EnumType.STRING)
@Column(name = "mailState")
private MailState state;
//...getters and setters etc...
public enum MailState {
UNREAD("Unread"),
BLOCK_SUCCESS("Block Success"),
BLOCK_FAILURE("Block Failure");
private final String value;
MailState(String v) {
value = v;
}
public String value() {
return value;
}
public static MailState fromValue(String v) {
for (MailState c: MailState.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}
}
当我可以清楚地看到一条记录并且休眠加载查询的枚举时,为什么这不返回任何记录。有什么想法吗?
【问题讨论】:
标签: java mysql spring hibernate jpa