我尝试用java和jpa做函数searchBook.我有2个课程,分别是媒体和书.本书扩展了媒体.我将数据保存在不同的表中.我尝试从下面的查询中选择数据:
TypedQuery<Media> query = em.createQuery(
"SELECT m.title, b.isbn, b.authors"
+ " FROM Book b, Media m" + " WHERE b.isbn = :isbn"
+ " OR lower(m.title) LIKE :title"
+ " OR b.authors LIKE :authors", Media.class);
query.setParameter("isbn", book.getisbn());
query.setParameter("title", "%" + book.getTitle().toLowerCase()
+ "%");
query.setParameter("authors", "%" + book.getAuthors() + "%");
bookList = query.getResultList();
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误:
java.lang.IllegalArgumentException:无法为具有多个返回的查询创建TypedQuery
这是我第一次使用JPA.我找不到错误.
我试图通过使用CORS过滤器http://software.dzhuvinov.com/cors-filter-installation.html来解决Access-Control-Allow-Origin的问题.我按照说明操作,它只能GET而不是POST.我在Tomcat服务器上有Java servlet,我通过我的web应用程序调用这个servlet,代码在这里:
var url = "http://server_url:8080/"
+ "gtpapi/testPlan/guid_" + planId + "/packages/" + packId + "/results";
$.ajax({
contentType : 'application/json',
type : "POST",
crossDomain: true,
url : url,
data : JSON.stringify(postData),
async : false,
dataType : 'json',
error : function(XMLHttpRequest) {
throw XMLHttpRequest.statusText;
}
});
Run Code Online (Sandbox Code Playgroud)
这是我的web服务器的web.xml.
<filter>
<!-- The CORS filter with parameters -->
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, OPTIONS</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Origin, Content-Type, X-Requested-With, Access-Control-Allow-Origin</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>false</param-value>
</init-param> …
Run Code Online (Sandbox Code Playgroud) 我有一个非常奇怪的问题.我使用SharpZipLib库生成.zip.我发现.zip的大小比我的文本文件总大一点.我不知道出了什么问题.我也尝试谷歌,但我找不到与我的情况有关的任何内容.这是我的代码:
protected void CompressFolder(string[] files, string outputPath)
{
using (ZipOutputStream s = new ZipOutputStream(File.Create(outputPath)))
{
s.SetLevel(0);
foreach (string path in files)
{
ZipEntry entry = new ZipEntry(Path.GetFileName(path));
entry.DateTime = DateTime.Now;
entry.Size = new FileInfo(path).Length;
s.PutNextEntry(entry);
byte[] buffer = new byte[4096];
int byteCount = 0;
using (FileStream input = File.OpenRead(path))
{
byteCount = input.Read(buffer, 0, buffer.Length);
while (byteCount > 0)
{
s.Write(buffer, 0, byteCount);
byteCount = input.Read(buffer, 0, buffer.Length);
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)