我希望拥有比我更多Ebean专业知识的人可以帮助我解决我现在正在排除故障的不稳定问题.
环境:
我的主要问题是当我重新启动Play时,我正在交替使用SQLExceptions,所有这些都与Ebean正在创建的预准备语句中的参数太多或太少有关.数据集A在数据集B失败的情况下工作一半,但在重新启动Play时,数据集B在数据集A失败时工作.
我正在根据我写入传递给函数的一组Filter对象动态构建一个Ebean Query对象.Ebean查询正在查找满足每个Filter的给定要求的所有对象.
该功能类似于:
private List<Contact> contacts getContacts(Set<Filter> filters) {
Query<Contact> query = Contact.find;
for (Filter filter : filters) {
filter.apply(query);
}
List<Contact> contacts = query.findList();
}
Run Code Online (Sandbox Code Playgroud)
过滤器的示例:
public void apply(Query<Contact> query) {
query.where().in("tags", getTags());
}
Run Code Online (Sandbox Code Playgroud)
首先,Ebean支持这种类型的查询构建吗?我相信这是因为大多数时候这是有效的,然而,我遇到了使用某些数据运行"getContacts"函数数百次的问题,但有时只是......
所以坚持我,因为这个问题非常令人困惑.我还将介绍数据实际上的大部分细节,但如果您需要/需要更多信息,请询问.
数据集A的查询和异常:
select distinct t0.contact_id c0, t0.contact_uuid c1, t0.bounce c2
from contact t0
join email_record u1 on u1.contact_id = t0.contact_id
join contact_tag u2z_ on u2z_.contact_id = t0.contact_id
join tag u2 on u2.tag_id = …Run Code Online (Sandbox Code Playgroud) 在大部分时间工作后,我觉得我非常接近如何测试一个接受来自JUnit的文件上传的控制器方法的解决方案.我的juint测试代码如下:
Map<String, String> postData = makePostMap(uploadForm);
File file = new File("test/resources/shared/uploads/blank.csv");
TemporaryFile temporaryFile = new TemporaryFile(file);
MultipartFormData.FilePart filePath = new MultipartFormData.FilePart(
"file",
"file.csv",
new scala.Some<>("text/csv"),
temporaryFile);
List<MultipartFormData.FilePart> fileParts = Lists.newArrayList(filePath);
scala.collection.immutable.Seq files = JavaConversions.asScalaBuffer(fileParts).toList();
Map<String, scala.collection.immutable.Seq<String>> postData2 = new HashMap<>();
for (String s : postData.keySet()) {
postData2.put(s, JavaConversions.asScalaBuffer(Lists.newArrayList(postData.get(s))).toList());
}
scala.collection.immutable.Map<String, scala.collection.immutable.Seq<String>> scalaMap =
JavaConversions.mapAsScalaMap(postData2).toMap(Predef.<Tuple2<String, scala.collection.immutable.Seq<String>>>conforms());
MultipartFormData formData = new MultipartFormData(scalaMap, files, null, null);
AnyContentAsMultipartFormData body = new AnyContentAsMultipartFormData(formData);
// run
login(employee);
String url = routes.ManageContacts.uploadCsv().url();
FakeRequest fakeRequest = new FakeRequest(POST, …Run Code Online (Sandbox Code Playgroud)