看上去很简单,但就像netsuite一样,它很痛苦。这是我目前所拥有的。
TransactionSearch invoiceSearch = new TransactionSearch();
TransactionSearchBasic invoiceSearchBasic = new TransactionSearchBasic();
SearchEnumMultiSelectField criteria = new SearchEnumMultiSelectField();
criteria.setOperator(SearchEnumMultiSelectFieldOperator.ANY_OF);
String[] statuses = new String[] { TransactionStatus.BILL_OPEN.toString() };
stats.getSearchValue().addAll(Arrays.asList(statuses));
invoiceSearchBasic.setStatus(stats);
如果我注释掉invoiceSearchBasic.setStatus这一行,我就能得到所有的交易(包括我想要的那些 "Open "的交易),但是当它在那里时,我什么都没有得到。不用说把TransactionStatus.BILL_OPEN.toString()改成 "Open "也不行,那就太简单了。
好吧,我已经解决了。对于其他人来说,这就是问题所在。
从TransactionStatus枚举中,
@XmlEnumValue("_billOpen")
BILL_OPEN("_billOpen")
当你记录toString值的时候,它给出了 帐单_OPEN (不是 _billOpen)
但它 _billOpen 我们需要!
解决办法。
SearchEnumMultiSelectField criteria = new SearchEnumMultiSelectField();
criteria.setOperator(SearchEnumMultiSelectFieldOperator.ANY_OF);
String[] statuses = new String[] { "_billOpen" };
criteria.getSearchValue().addAll(Arrays.asList(statuses));