我需要帮助进行QueryDSL查询。我正在使用Spring Data JPA和这个库。 我的服务类:
@Service("tblActivityService")
public class TblActivityService implements AbstractService<TblActivity> {
@Resource
private TblActivityRepository tblActivityRepository;
@Override
public List<TblActivity> findAll(Predicate predicate) {
return (List<TblActivity>) tblActivityRepository.findAll(predicate);
}
}
我有一个动态的筛选列表:
@Entity
@Table(name = "sys_filters")
public class SysFilter implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "filter_id")
private Integer filterId;
@JoinColumn(name = "user_id", referencedColumnName = "user_id")
@ManyToOne(fetch = FetchType.EAGER)
private SysUser userId;
@Size(max = 45)
@Column(name = "table_name")
private String tableName;
@Size(max = 45)
@Column(name = "column_name")
private String columnName;
@Size(max = 45)
@Column(name = "condition")
private String condition;
@Size(max = 100)
@Column(name = "value")
private String value;
// getters & setters
}
我有一个列名(例如标题)
我有一个条件(例如==,!=,> =等) - 我可以将其存储为符号或单词(equals等)。
最后,我有一个值。
问题是“如何动态生成我的服务的谓词?”表格有大约25个字段。
谓词看起来像这样:
public BooleanExpression buildFilteredResult(List<SysFilter> filters) {
//TODO do it!
return QTblActivity.tblActivity.title.eq("Value");
// I need to do it dynamically for each filter in the list
}
问题是如何通过其字符串值调用columnName。 你有什么建议吗?