当我调用刷新函数时,我从我的EntityManager收到此错误.
public void saveProduct(Product product) {
entityManager.refresh(product);
}
Run Code Online (Sandbox Code Playgroud)
我听说这可能是Spring/Hibernate的一个错误,但是我不知道如何解决这个问题.
编辑:错误是
java.lang.IllegalArgumentException: Entity not managed
org.hibernate.ejb.AbstractEntityManagerImpl.refresh(AbstractEntityManagerImpl.java:268)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358)
$Proxy17.refresh(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:198)
$Proxy11.refresh(Unknown Source)
springapp.repository.JdbcProductDao.saveProduct(JdbcProductDao.java:66)
springapp.service.SimpleProductManager.increasePrice(SimpleProductManager.java:28)
springapp.web.PriceIncreaseFormController.onSubmit(PriceIncreaseFormController.java:39)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:421)
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:136)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:326)
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:313)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Run Code Online (Sandbox Code Playgroud) 有没有办法让@Scheduled石英作为底层调度程序?
我能想到的两件事,但都需要一些工作:
BeanPostProcessor将解析@Scheduled注释并注册石英作业的自定义TaskScheduler委托给石英Scheduler.问题是:是否已经针对上述两个选项编写了一些内容,还有其他选择吗?
怎么会这样做?
我已经尝试创建一个新的空列表,然后将不可修改的列表元素复制到它,但我得到了不支持的操作错误.
任何帮助表示赞赏.
基本上就是这个 - 我习惯用来mysql < dbfile.sql恢复用它创建的数据库转储mysqldump.然后我看到了mysqlimport,没有提到另一种方式.两个CLI的参数看起来相似.那么,实际的区别是什么?(还有吗)
我想知道是否有人可以建议:我有一个场景,由Quartz运行的预定作业将每小时更新一个对象的arraylist.
但我需要这些对象的arraylist对Tomcat创建的所有会话都是可见的.所以我想的是我每隔一小时从运行的Quartz作业中的某个地方写这个对象,这样每个会话都可以访问它.
任何人都可以说这可能会达到最佳效果吗?我想知道从Quartz作业写入servlet上下文的对象?另一种方法是让每个会话从数据库表中填充对象的arraylist.
谢谢
摩根先生.
问题是从HashMap.values()集合创建ArrayList需要多少钱?或者单独创建值Collection?假设Map.size()> 100k.对象也可以一直保存在ArrayList(而不是HashMap)中,这对其他部分有影响(元素的修改,易于按键).ArrayList用于迭代每个第n个元素.(这就是为什么不能直接使用值集合的原因).在迭代期间不进行任何修改.
现在,这不是严格意义上的URL缩短,但我的目的无论如何,所以让我们这样看.当然,URL缩短的步骤是:
现在,关于第二点.这是我想出的:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
UUID uuid = UUID.randomUUID();
dos.writeLong(uuid.getMostSignificantBits());
String encoded = new String(Base64.encodeBase64(baos.toByteArray()), "ISO-8859-1");
String shortUrlKey = StringUtils.left(encoded, 6); // returns the leftmost 6 characters
// check if exists in database, repeat until it does not
Run Code Online (Sandbox Code Playgroud)
这够好吗?
我试图修剪字符串中的前导空格,我不知道我的方法有什么问题,任何建议都会受到赞赏吗?
码:
this.poNumber = poNumber.equals("") ? poNumber : poNumber.trim();
我正在从csv文件中读取poNumber为"IG078565和IG083060",并且输出也是相同的空格相同的值,不知道为什么?
更新
为更好的上下文添加完整方法:
public BillingDTO(String currency, String migrationId, String chargeId, String priceId, String poNumber, String otc,
String billingClassId, String laborOnly) {
super();
this.currency = currency.equals("") ? currency : currency.trim();
this.migrationId = migrationId.equals("") ? migrationId : migrationId.trim();
this.chargeId = chargeId.equals("") ? chargeId : chargeId.trim();
this.priceId = priceId.equals("") ? priceId : priceId.trim();
this.poNumber = poNumber.equals("") ? poNumber : poNumber.trim();
//poNumber.trim();
//System.out.println("poNumber:"+this.poNumber.trim());
//this.poNumber = poNumber.equals("") ? poNumber : poNumber.trim();
this.otc = otc.equals("") ? otc …Run Code Online (Sandbox Code Playgroud) 我必须从远程位置解压缩一些依赖项并在本地安装它们.
我成功地获取它们(使用antrun插件)并安装它们(使用安装插件)
但是,如果我将它们定义为依赖项(<dependency>..</dependency>)maven首先尝试解决它们,只有这样,如果成功,则继续执行antrun并安装.
我也尝试了build-helper-plugin及其attach-artifact,但它没有做任何事情(它甚至没有将工件添加到最终的war文件中)
那么,如何在maven尝试解决依赖关系之前运行我的执行?