草庐IT

java - 为什么这个流不返回任何元素?

我尝试将以下代码编写为流:AbstractDevicemyDevice=null;for(AbstractDevicedevice:session.getWorkplace().getDevices()){if(device.getPluginconfig().getPluginType().getId()==1){myDevice=device;}}这段代码工作正常。但是当我这样重写它时,它不再起作用了:myDevice=session.getWorkplace().getDevices().stream().filter(s->s.getPluginconfig().getPlug

java - Spring Data REST - @PrePersist 和@HandleBeforeCreate 之间的区别?

我在JPA映射上使用SpringDataRest。JPA提供了@PrePersist注解,用于在数据库中实体持久化之前调用的方法。SpringDataRest为捕获实体创建事件时要调用的方法提供了@HandleBeforeCreate注解。这对我来说似乎相当。什么时候应该使用一个,什么时候应该使用另一个? 最佳答案 @HandleBeforeCreate仅在REST请求传入时调用,但在实体生命周期期间调用@PrePersist。因此,如果您的调用路径不是通过REST(例如通过直接调用实体管理器或由于JPAimpl的内部级联操作),您

java - 没有定义 [org.springframework.transaction.PlatformTransactionManager] 类型的合格 bean

我正在使用2个Weblogic数据源;在我的XML配置中,我有2个持久性单元、2个entityManagerFactories和2个transactionManagers。文件如下:persistence.xml:org.eclipse.persistence.jpa.PersistenceProviderorg.eclipse.persistence.jpa.PersistenceProviderconfig.xml:FINEFINE模型库:@Repository("ModelRepo")@PersistenceContext(unitName="modelPersistence")

java - Hibernate 没有在 Spring Boot 项目中抛出 LazyInitializationException

我在一个使用Hibernate5.0的SpringBoot项目上工作。不幸的是,即使在提交事务之后,Hibernate也没有抛出LazyInitializationException来读取惰性初始化对象。如何在事务之外启用LazyInitializationException?(当前行为隐藏了代码中的错误。) 最佳答案 SpringBoot有一个属性spring.jpa.open-in-view,默认值为true。这将注册一个OpenEntityManagerInViewInterceptor这将使整个请求的事务保持Activity

java - 从 Spring Data Jpa 查询返回自定义对象

我在jpa存储库类中有一个自定义查询:packageit.univaq.we.internshipTutor.repository;import...publicinterfaceProfessorRepositoryextendsJpaRepository{ListfindAll();...@Query(value="SELECTprofessor.id,professor.department_id,"+"professor.first_name,professor.last_name,"+"professor.email,COUNT(professor_id)ascount"+"

java - 如何解决 N+1 选择问题?

我无法理解如何在jpa或hibernate中避免n+1选择。根据我的阅读,有“左连接获取”,但我不确定它是否仍然适用于多个列表(oneToMany)..有人可以向我解释一下吗,或者给我一个带有清晰完整解释的链接?如果这是一个菜鸟问题,我很抱歉,但我找不到关于这个问题的真正清晰的文章或文档。谢谢 最佳答案 除了连接,您还可以使用子选择。这会导致执行2个查询(或者通常m+1,如果您有m列表),但它也适用于大量列表,这与join不同获取。使用连接抓取,如果您使用您的实体抓取2个表(或列表),您将得到一个笛卡尔积,即两个表中行对的所有组合。

java - JPA 在 ManyToOne 关系中持久化对象

我的数据库中有一个公司/员工@OneToMany关系定义为:@EntitypublicclassEmployee{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privatelongid;@ManyToOne@JoinColumn(name="companyid")Companycompany;....}@EntitypublicclassCompany{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privatelongid;...}现在我要将新创建的员工添加到一家独立

java - 引用条件查询中较早的别名字段

在这个查询中:CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQueryq=cb.createTupleQuery();//FROMGamePlayedEventgpeRootgpe=q.from(GamePlayedEvent.class);//SELECTgameId,COUNT(*)AScount,AVG(duration)//ASavDur,AVG(rewardCurrency)ASavCur,AVG(rewardXP)avXpq.select(cb.tuple(gpe.get("gameId"),cb.count(gpe).

java - 如何让 Hibernate 为新对象从 1 开始版本列?

有谁知道是否可以让Hibernate使用1作为新对象的版本(乐观锁定字段)而不是零?我的应用程序以前使用的是从1开始的Eclipselink,更改导致了一些问题。我正在使用JPA,但希望任何解决方案都是特定于Hibernate的(希望是persistence.xml中的一个属性!)。 最佳答案 问得好,文档中没有明确提及(eventhoughithintsthatit'spossible)。我也找不到针对这种情况的任何测试,因此,这可能是对Hibernate测试套件的一个很好的改进;-)无论如何,如果您将@Version属性映射到起

java - JPA @Entity 继承

我研究JPA/Hibernate@Entity继承已有一段时间了,但似乎找不到任何可以解决我想要实现的目标的东西。基本上,我希望能够根据需要定义一个包含所有列和表映射的@Entity。然后,我希望能够使用在每个“子实体”的主体中定义的不同组的@Transient方法在许多不同的位置扩展@Entity。这是我正在努力实现但迄今为止没有成功的基本示例:@Entity@Table(name="mountain")publicclassMountainEntityBaseimplementsSerializable{publicIntegermountainId=0;publicInteger