草庐IT

java - 循环是否每次都需要更长的时间来执行?

我正在从事一些涉及将邮政编码、城市和国家/地区存储在一起的J2EE项目。我们开发了一个Java类来处理每个国家/地区文件(包含每个邮政编码和每个城市)的集成。问题是对于某些国家(英国、荷兰...),文件非常大(400.000到800.000行)。我有一个while()循环,它读取下一行,获取信息并将其存储到我的数据库中。问题是,对于1000或10.000行的第一行,过程很快,非常快,然后每次循环时似乎都在变慢,然后恰好在150.000行后抛出HeapSpaceOverflowException。我首先想到有些对象没有被垃圾回收并减慢了我的算法,但我无法弄清楚是哪一个。此外,当我在我的P

java - JPA2/Hibernate - 停止延迟加载?

我遇到了一个问题,JPA在我不想要的时候试图延迟加载我的数据。本质上发生的事情是我正在使用一个服务来检索一些数据,当我将该数据解析为JSON时,JSON库触发hibernate以尝试延迟加载数据。有什么办法可以阻止这种情况吗?我在下面给出了一个例子。//WebControllermethodpublicStringgetEmployeesByQuery(Stringquery){Gsongson=newGson();Listemployees=employeeService.findEmployeesByQuery(query);//Hereiswheretheproblemisocc

java - 调用 EntityManager.merge() 时未设置 ID

我在2个对象父子对象之间有一个简单的OneToMany关联,如下所示。父实体@EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)privateLongid;privateStringname;@VersionprivateLongversion;@OneToMany(cascade=CascadeType.ALL,orphanRemoval=true,fetch=FetchType.EAGER)Listchildren=newArrayList();....}子实体@Entitypublicc

java - 定义列表的顺序

我有以下问题。我有三个类,A、B和C。A包含B:s的OneToMany关系列表。B包含与C的ManyToOne关系。C包含一个名为“name”的字段,B也包含一个名为“name”的字段。我想要完成的是让A的列表中的项目主要按C的名称排序,其次按B的名称排序-问题是我不知道如何执行此操作。有可能吗?我使用EclipseLink作为我的JPA供应商。classA{@OneToMany@OrderBy("b.c.name,b.name")b;}classB{@ManyToOneCc;Stringname;}classC{Stringname;}编辑是的,我尝试了不同的变体,例如@OrderB

java - JPQL (JPA) 搜索子字符串

我面临着一个简单的问题,即通过实体可能包含的某些(子)字符串搜索实体。例如我有用户user1、usr2、useeeer3、user4,我将进入搜索窗口“use”,我希望返回user1、useeer3、user4。我相信你现在明白我的意思了。JPA(JQPL)中有构造吗?在命名查询中以某种方式使用WHERE进行搜索会很好。类似于“SELECTuFROMUseruWHEREu.nicknamecontains:substring” 最佳答案 使用LIKE表达式。以下是JPA1.0规范(JSR220)的4.6.9LikeExpressio

java - JPA:在保存时忽略字段,但在选择时获取

我使用Hibernate作为我的JPA提供者,我希望在调用save()时忽略实体中的字段之一。但是,我在相应的数据库表中确实有一个匹配列,并且我希望在获取实体时用数据库值填充我的实体字段。因此,我希望在保存实体时忽略该字段,但在获取实体时不忽略。如果我使用@Transient,该字段将被完全忽略,这不是我想要的。有什么办法吗? 最佳答案 来自优秀的书ProJPA2:JPAdefinesoptionstosetindividualmappingstoberead-onlyusingtheinsertableandupdatableel

java - @Transactional (noRollbackFor=RuntimeException.class) 不会阻止在 RuntimeException 上回滚

@Transactional(noRollbackFor=RuntimeException.class)publicvoidmethodA(Entitye){service.methodB(e);}---以下服务方式---@Transactional(propagation=Propagation.REQUIRES_NEW,noRollbackFor=RuntimeException.class)publicvoidmethodB(Entitye){dao.insert(e);}当methodB()中的dao.insert(e)导致主键冲突并抛出ConstraintViolationE

java - 我应该在休息请求和/或响应中使用 jpa 实体吗

我有一种情况,我可以发送JPA实体作为休息请求和/或获取JPA实体作为休息响应@RequestMapping(value="/products",method=RequestMethod.POST)public@ResponseBodyProductDetailsResponsecreateNewProduct(@RequestBodyProductDetailsnewProduct)throwsException{ProductDetails是一个实体@Entity@Table(name="product")publicclassProductDetails{我应该使用它,还是进行某

java - 持久性错误消息 : An instance of a null PK has been incorrectly provided for the find operation

我正在尝试使用Netbeans7.01来遵循有关JSF2.0和JPA的教程。我正在使用oracleXE和JDBC_6。我使用实体向导中的JSF页面来生成我的JSF页面。一切正常,因为我可以从数据库中检索数据并显示它们。但是,当我尝试在数据库中创建或更新记录时,出现此错误:AninstanceofanullPKhasbeenincorrectlyprovidedforthefindoperation这是怎么引起的,我该如何解决? 最佳答案 这基本上意味着您执行了以下操作:Entityentity=em.find(Entity.clas

java - JPA POJO 作为数据对象

使用JPA实体的最佳实践是什么?由于JPA实体只是POJO,在系统的其他部分将该对象用作数据对象是否合适,还是我应该将它们转换为另一个数据对象?在系统的其他与JPA无关的部分使用JPA实体POJO是否可以接受? 最佳答案 实体现在自己能够传输自己的数据,那么为什么还要费心将它们转换成其他东西呢?也就是说,我倾向于同意《DTOanAntiPatterninEJB3.0》(原文链接目前下线):TheheavyweightnatureofEntityBeansinEJBspecificationspriortoEJB3.0,resulte