我有1-N关系(对象有一个列表),并希望从列表中删除一个项目.使用JPA删除列表中项目的正确方法是什么?
我是否必须首先更新列表并合并所有者并删除项目后(如果我不删除项目并且只是合并所有者,孤立将保留在DB中,对吧?)?在调用merge()和remove()的顺序中,remove()和merge()的顺序是否重要?
代码示例:
List<Item> items = owner.getItems();
Item itemToRemove = items.get(index);
owner.remove(itemToRemove);
em.merge(owner);
em.remove(itemToRemove);
Run Code Online (Sandbox Code Playgroud) 我在Spring Batch中的JobRepository上使用SERIALIZED隔离级别获取此异常:
org.springframework.dao.CannotSerializeTransactionException: PreparedStatementCallback; SQL [INSERT into DATAFEED_APP.BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) values (?, ?, ?, ?)]; ORA-08177: can't serialize access for this transaction
Run Code Online (Sandbox Code Playgroud)
; 嵌套异常是java.sql.SQLException:ORA-08177:无法序列化此事务的访问权限
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:269)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:603)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:812)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:868)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:872)
at org.springframework.batch.core.repository.dao.JdbcJobInstanceDao.createJobInstance(JdbcJobInstanceDao.java:105)
at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobExecution(SimpleJobRepository.java:135)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.batch.core.repository.support.AbstractJobRepositoryFactoryBean$1.invoke(AbstractJobRepositoryFactoryBean.java:172)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy27.createJobExecution(Unknown Source)
at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597) …
Run Code Online (Sandbox Code Playgroud) 我正进入(状态
Caused by: java.net.NoRouteToHostException: No route to host
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:564)
at sun.reflect.GeneratedMethodAccessor638.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:140)
at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:130)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
Run Code Online (Sandbox Code Playgroud)
贾瓦多克说
表示尝试将套接字连接到远程地址和端口时发生错误.通常,由于中间防火墙或中间路由器关闭,无法访问远程主机.
这是客户端或远程端的错误,还是它们中的任何一个?
我有一份我需要编组的列表地图.我创建了XML适配器,但java.util.List is an interface, and JAXB can't handle interfaces.
在创建JAXB上下文时我一直在努力.我该如何编组列表地图?
这是我的代码:
@XmlRootElement(name = "myClass")
public class MyClass {
@XmlJavaTypeAdapter(MapOfListsAdapter.class)
protected Map<Integer, List<Condition>> expectedResults;
Run Code Online (Sandbox Code Playgroud)
我为Map编写了适配器MapOfListsAdapater:
public class MapOfListsAdapter extends XmlAdapter<List<MapOfListsEntry>, Map<Integer, List<Condition>>> {
@Override
public List<MapOfListsEntry> marshal(Map<Integer, List<Condition>> v) {...}
@Override
public Map<Integer, List<Condition>> unmarshal(List<MapOfListsEntry> v) {...}
}
Run Code Online (Sandbox Code Playgroud)
MapOfListEntry具有以下JAXB注释:
public class MapOfListsEntry {
@XmlAttribute
private Integer key;
@XmlElementRef
@XmlElementWrapper
private List<Condition> value;
Run Code Online (Sandbox Code Playgroud) 我正在调用Version One REST API并继续收到XMLHttpRequest cannot load https://www10.v1host.com/... Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
javascript错误.我发送GET请求,预计XML内容将作为响应返回.这是我的jQuery代码:
$.ajax({
dataType: "xml",
url: "https://www10.v1host.com/...",
success: function(data, status, xhr) {
alert("Load was performed.");
}
});
Run Code Online (Sandbox Code Playgroud)
我已经改变了dataType: "jsonp
"并且通过这种方式我得到了这种格式的回应:
jsonp1294354293197(<?xml version="1.0" encoding="UTF-8"?><Asset ...</Asset>)
Run Code Online (Sandbox Code Playgroud)
但是得到另一个javascript错误:" Uncaught SyntaxError: Unexpected token <
"
有没有办法如何获取跨域XML休息数据(类似于XMLp)或为jsonp做一个变通方法(防止解析JSON格式并使用我自己的解析XML)?
使用jQuery,我调用的是Version One Rest API,需要在HTTP头中验证用户身份.
我试过了
$.ajax({
dataType: "jsonp",
beforeSend: function(xhr){
xhr.setRequestHeader("Authorization", "Basic xyz"); // xyz usr:pwd Base64 encoded
},
url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...",
success: function(data, status, xhr) {
alert("Load was performed.");
}
});
Run Code Online (Sandbox Code Playgroud)
和
$.ajax({
dataType: "jsonp",
username:"usr",
password:"pwd",
url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...",
success: function(data, status, xhr) {
alert("Load was performed.");
}
});
Run Code Online (Sandbox Code Playgroud)
但我总是弹出来询问我的凭据(我使用Chrome).即使我在弹出窗口中键入凭据,我也没有通过身份验证,窗口仍然显示.
在托管模式下运行我的GWT应用程序(gwt 2.0.4)时,调用在远程Tomcat上运行的RPC方法,我得到GWT序列化异常:
INFO: GwtRpcEventSrvc: ERROR: The serialization policy file '/84EC7BA65AF8175BAA99B47877FDE163.gwt.rpc' was not found; did you forget to include it in this deployment?
SEVERE: GwtRpcEventSrvc: WARNING: Failed to get the SerializationPolicy '84EC7BA65AF8175BAA99B47877FDE163' for module 'http://host:19980/MYAPP/'; a legacy, 1.3.3 compatible, serialization policy will be used. Youmay experience SerializationExceptions as a result.
SEVERE: Exception while dispatching incoming RPC call
Throwable occurred: com.google.gwt.user.client.rpc.SerializationException: java.lang.reflect.InvocationTargetException
.at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeWithCustomSerializer(ServerSerializationStreamWriter.java:760)
.at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:723)
.at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:612)
.at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)
.at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152)
...
Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'com.mypackage.data.MyData' was not assignable to …
Run Code Online (Sandbox Code Playgroud) 当我部署更新版本的GWT应用程序时,有时会出现此日志错误:
SEVERE: GwtRpcEventSrvc: WARNING: Failed to get the SerializationPolicy 'www.host.com:22041/MYAPP/'; a legacy, 1.3.3 compatible, serialization policy will be
a result.
Run Code Online (Sandbox Code Playgroud)
<script
src="MyApp.nocache.js?v=123"...
)但它没有帮助.在Eclipse(Helios)中打开JSF页面(JSF + Apache Trinidad + facelet)时,Eclipse会在页面打开前冻结几秒钟.
此外,在编辑页面时,代码完成/语法验证很慢 - 例如我输入<tr
:并且我必须等待几秒钟才能继续输入或显示tr标签.
每次输入开始标签时我都要等待并且让我慢慢减速,这是非常烦人的.
我也在使用自定义facelet标签.
怎么做才能避免Eclipse冻结/放慢速度?我是否必须更改任何配置才能加快速度?
java ×4
gwt ×2
jquery ×2
rest ×2
cross-domain ×1
eclipse ×1
facelets ×1
gwt-rpc ×1
jaxb ×1
jpa ×1
jsf ×1
jsonp ×1
list ×1
map ×1
marshalling ×1
networking ×1
oracle ×1
routing ×1
spring-batch ×1
trinidad ×1