Tag: spring data jpa

JPA孤儿删除不适用于OneToOne关系

有没有人有这个问题的解决方法: https : //hibernate.atlassian.net/browse/HHH-9663 ? 我也面临着类似的问题。 当我在两个实体之间创建单向(无反向引用)一对一关系并将orphan remove属性设置为true时,在将引用设置为null后,引用的对象仍在数据库中。 以下是示例域模型: @Entity public class Parent { … @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name = “child_id”) private Child child; … } @Entity public class Child { … @Lob private byte[] data; … } 我目前正在通过手动删除孤儿来解决这个问题。

如何使用java config而不是XML声明存储库populator bean?

我正在开发一个基于Spring的项目(迄今为止)完全没有XML,除了现在我已经使用Spring JPA存储库populator打了一个墙: 如何在java @Configuration类中表达上述内容? 这篇文章建议直接使用FactoryBean: https ://stackoverflow.com/a/13566712/1746274 我试过了,我得到的最接近的是以下但是它不太正确。 @Bean(name=”repositoryPopulator”) public RepositoryPopulator getRespositoryPopulator() throws Exception { final JacksonRepositoryPopulatorFactoryBean factory = new JacksonRepositoryPopulatorFactoryBean(); factory.getObject().setResourceLocation(“classpath:test-data.json”); factory.afterPropertiesSet(); return factory.getObject(); } 上面的结果是FactoryBeanNotInitializedException ,消息JacksonRepositoryPopulatorFactoryBean does not support circular references 。 有任何想法吗?

junit测试中的spring-data-jpa beanvalidation

在我最近的工作中,我使用了spring-data-jpa来利用提供的存储库。 当涉及到集成测试时,我无法配置(我假设)测试的spring上下文,并且作为结果beanvalidation在我的测试中不起作用。 我知道我可以注入validation器,并对我的注释进行unit testing,但事实并非如此。 我正在编写集成测试,并希望在支持DB的情况下测试存储库。 我准备了简单的项目来显示所有必要的项目文件。 当我运行测试时,2失败了,我不知道为什么,类路径上存在hibernatevalidation器。 Failed tests: insertWrongEmail(com.example.core.data.jpa.UserRepositoryTest): Expected ConstraintViolationException wasn’t thrown. insertToShortPassword(com.example.core.data.jpa.UserRepositoryTest): Expected ConstraintViolationException wasn’t thrown. [..] Apr 23, 2013 5:00:08 PM org.hibernate.validator.internal.util.Version INFO: HV000001: Hibernate Validator 4.3.1.Final 源代码和mvn测试输出如下。 预先感谢您的帮助。 Java类(我删除了注释,geters,seters,equals,hashCode,toString等): BaseEntity package com.example.core.data.jpa; import javax.persistence.*; @MappedSuperclass public abstract class BaseEntity { public static final String SEQUENCE = “global_seq”; @Id @SequenceGenerator(name = […]

使用Spring Data JPA和@Query注释仅获取第一个/最后一个元素

编辑:关于这个问题的第二和第四个答案提供了关于这个问题的解决方案有关Spring-Data-JPA注释的setMaxResults? 目标:使用Spring Data JPA存储库和Spring Query注释,按属性z获取最大/最小元素。 到目前为止我有什么 @Query(“SELECT xelement FROM x xelement ORDER BY xelement.z”) public List findFirstElement(); 问题:此查询获取所有元素(这不是真正有效)。 如果我直接使用EntityManager,我可以使用设置结果的数量 entityManager.setMaxResults(1) 只获得第一个元素。 问题:如何使用@Query注释指定最大结果数? 想法:使用大小为0的PageRequest还是要走的路? 约束:我知道“FindFirstBy ….”查询function,但我想/必须使用@Query注释。

加载spring-boot和spring-data-jpa时,Hibernate无法加载JPA 2.1 Converter

我有一个UUID的自定义转换器将其转换为字符串而不是二进制文件: package de.kaiserpfalzEdv.commons.jee.db; import javax.persistence.AttributeConverter; import javax.persistence.Converter; import java.util.UUID; @Converter(autoApply = true) public class UUIDJPAConverter implements AttributeConverter { @Override public String convertToDatabaseColumn(UUID attribute) { return attribute.toString(); } @Override public UUID convertToEntityAttribute(String dbData) { return UUID.fromString(dbData); } } 转换器(我有一些其他特别用于时间/日期处理的)驻留在库.jar文件中。 然后我在.jar文件中有实体。 像这个: package de.kaiserpfalzEdv.office.core.security; import de.kaiserpfalzEdv.commons.jee.db.OffsetDateTimeJPAConverter; import de.kaiserpfalzEdv.commons.jee.db.UUIDJPAConverter; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import […]

检查两个其他日期之间的日期春季数据jpa

我有这个型号: public class Event { private String name; private Date start; private Date end; } 和存储库为 @Repository public interface EventRepository extends JpaRepository { List findByEventTypeAccount(Account account); } 我想要做的是,我将通过一个日期并且需要检查日期是否在start和end之间例如(我将在9月30日作为日期通过,并且需要查找在其start和end之间的所有条目) 像findDateisBetweenStartAndEnd(Date date)类的东西?

Spring Data JPA(Hibernate):如何仅使用其抽象超类中的字段来检索具体实体?

考虑以下层次结构,其中实体WidgetA和WidgetB扩展抽象Widget超类: @Entity @Inheritance(strategy = InheritanceType.JOINED) public abstract class Widget implements Serializable { @Column(name=”serialNumber”, length=64, nullable=false, unique=true) private String serialNumber; … 和 @Entity public class WidgetA extends Widget implements Serializable { … 和 @Entity public class WidgetB extends Widget implements Serializable { … 我需要通过serialNumber搜索Widgets,但我不知道我在运行时搜索的Widget的具体类型。 通过serialNumber搜索小部件的正确方法是什么,这样如果serialNumber是WidgetA小部件,那么返回WidgetA的实例,依此类推? 我试图在Widget DAO中使用findyBySerialNumber() ,我收到一个错误,告诉我我无法实例化一个抽象类,这是有道理的,但我认为持久性提供程序会知道如何查看具体的子实体表并返回正确的实例。 我可以这样做吗? 我正在使用“Spring Data JPA”,因此Widget DAO非常简单: public interface WidgetDAO […]

Spring Data JPA – 注入失败 – BeanCreationException:无法自动assembly字段

我按照这里发布的教程获得了一个基础应用程序来使用Spring Data JPA。 现在,我如何理解,使用配置 应该导致Spring Data JPA扫描的包用于扩展JpaRepository接口并创建它的JpaRepository bean,因此可以使用简单的Spring @Autowired在我的服务类中的任何地方使用它。 但它失败了,说它无法找到一个带有className的bean(这是bean在创建时获得的默认名称,只需使用去大写的ClassName)。 但是,当我在我的applicationContext中配置bean manualy时,如下所示: Spring能够找到豆子。 我当然得到一个错误,因为我想从一个接口创建一个bean,这显然是行不通的。 但问题是,看起来Spring Data JPA“自动bean创建”似乎以某种方式失败了。 我附上相关代码,以便您查看。 顺便说一句,我应该提一下,我正在开发一个portlet,所以不要奇怪为什么我没有spring-config。 我目前只使用applicationConfig和一个MyPortlet-Portlet.xml进行portlet配置(但这不应该与此问题相关)。 我添加了import语句只是为了确保我没有使用错误的注释/类。 applicationContext.xml中 // JPA specific configuration here: dataSource, persistenceUnitManager exceptionTranslator, entityManagerFactory, SessionFactory, transactionManager – should not be relevant for this problem, tell me if i’m wrong ICustomerService – 只是CustomerService的一个接口 import model.entities.Customer; public interface ICustomerService { […]

如何在Spring中的共享EntityManager上手动启动事务?

我有一个LocalContainerEntityManagerFactoryBean作为EntityManager实例。 要快速删除整个表的内容,我想运行以下代码: @Service public class DatabaseService { @Autowired private EntityManager em; @Transactional public void clear() { em.createNativeQuery(“TRUNCATE TABLE MyTable”).executeUpdate(); } } 结果: ERROR org.springframework.integration.handler.LoggingHandler: javax.persistence.TransactionRequiredException: Executing an update/delete query at org.hibernate.jpa.spi.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:71) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:708) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at […]

在Spring Data Query中过滤子对象

我有以下域模型: Playlist – > List – > Video @Entity class Playlist{ // id, name, etc List playlistItems; // getters and setters } @Entity class PlaylistItem{ // id, name, etc. Video video; // getters and setters } @Entity class Video{ // id, name, etc. boolean isDeleted; // getters and setters } 我的存储库: public interface PlaylistRepository extends […]