Jpa标准,将枚举类型转换为字符串

时间:2016-01-30 08:36:26

标签: java hibernate jpa enums criteria

我遇到了一些问题。我创建了实体:

List<String> tempList = new ArrayList<>();
tempList.add("Warning");
Path path = root.get("traceLevel");
Predicate inP = path.in(tempList);

和jpa标准:

Parameter value [Warning] did not match expected type [com.getknowledge.platform.modules.trace.trace.level.TraceLevel (n/a)]

当然我遇到了问题

 global $wpdb, $post;
 // Query
 $query = sprintf("SELECT comment_author_email
                   FROM {$wpdb->comments}
                   JOIN {$wpdb->posts} ON {$wpdb->posts}.ID = {$wpdb->comments}.comment_post_ID
                   WHERE comment_post_ID = %d AND comment_approved = '1'", 
                   $post->ID);
 $emailslist = $wpdb->get_col($query);
 $emailslist = array_unique($emailslist);

 // get all emails
 print_r($emailslist);

由于过滤器的数据来自客户端,并且在基本级别进行处理,因此将字符串转换为枚举我无法做到。问题是,我可以使用字符串构建查询。

1 个答案:

答案 0 :(得分:0)

每个enum都有一个函数valueOf,它接受​​String并返回适当的常量。而不是

List<String> tempList = new ArrayList<>();
tempList.add("Warning");

使用

List<TraceLevel> tempList=new ArrayList<>();
tempList.add(TraceLevel.valueOf("Warning"));