Tag: jpa

Spring中的Pageable和@Param数据JpaRepository方法问题

我知道这个问题,但是使用org.springframework.data:spring-data-jpa:1.7.0.RELEASE我仍然遇到同样的问题( Either use @Param on all parameters except Pageable and Sort typed once, or none at all! )。 我的class级是: public interface BalanceHistoryRepository extends JpaRepository { @Query(“select bh from BalanceHistory bh where bh.account.id = :idAccount”) public BalanceHistory findCurrentBalanceByAccountNumber(PageRequest pageCriteira, @Param(“idAccount”) long idAccount); } 编辑 呼叫: Pageable page = new PageRequest(0, 1, Sort.Direction.DESC, “date”); BalanceHistory bh = […]

为什么Hibernate内联传递给JPA Criteria Query的整数参数列表?

我正在使用JPA Criteria API构建查询。 当我使用javax.persistence.criteria.Path#in(Collection)方法创建两个限制谓词时,生成的SQL查询与我所考虑的略有不同。 构建在int属性上的第一个谓词生成了SQL,内联参数集合的所有元素: in (10, 20, 30) 。 构建在String属性上的第二个谓词产生了参数化的SQL: in (?, ?, ?) 。 让我展示: 实体: @Entity public class A { @Id private Integer id; private int intAttr; private String stringAttr; //getter/setters } 查询: CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery q = cb.createQuery(A.class); Root root = q.from(A.class); q.where( root.get(“intAttr”).in(Arrays.asList(10, 20, 30)), root.get(“stringAttr”).in(Arrays.asList(“a”, “b”, “c”)) […]

JodaTime有JPA,PostgreSQL和NULL值

我试图将带有JPA的JodaTime DateTime字段保存到PostgreSQL,但是遇到了对数据库NULL值的空指针的麻烦。 我正在使用NetBeans 7 beta 2 IDE。 持久性实现是EclipseLink 2.2.0,我使用EclipseLink Converter来使映射工作。 这是我的领域的声明: @Converter( name=”dateTimeConverter”, converterClass=ejb.util.DateTimeConverter.class ) @Column(columnDefinition=”TIMESTAMP WITH TIME ZONE”) @Convert(“dateTimeConverter”) private DateTime testdate; 转换器类: public class DateTimeConverter implements Converter { private Logger log; private static final long serialVersionUID = 1L; @Override public Object convertObjectValueToDataValue(Object o, Session sn) { if (o == null) { log.info(“convertObjectValueToDataValue returning […]

如何在不获取OracleDB的“预期NUMBER但得到BINARY”的情况下查询Long值中的null?

我正在使用JPQL,并希望在Long字段中查询空值。 但我总是得到一个ORA-00932:不一致的数据类型:预期NUMBER得到了BINARY。 正如我所见,有很多人对此有疑问,但有人有解决方法吗? 例如,这是查询”SELECT a FROM Auftrag a WHERE :id is null OR a.id = :id” ,稍后我用setParameter(“id”, null)设置id。这用于更复杂的查询过滤目的,所以null在我们的例子中意味着忽略列上的filter。 有想法的人吗? 亲切的问候!

JPA 2.1:Java 8日期/时间API简介

我想在我的JPA应用程序中添加对Java 8 Date / Time API(JSR-310)的支持。 很明显, JPA 2.1 不支持Java 8 Date / Time API 。 作为一种解决方法,最常见的建议是使用AttributeConverter 。 在我现有的应用程序中,我将实体更改为使用LocalDate / LocalDateTime类型作为列映射字段,并为它们添加了java.util.Date旧setter / getter。 我创建了相应的AttributeConverter类。 将Query.setParameter()与java.util.Date实例一起使用时, 我的应用程序现在失败了 (它在转换到新API之前工作)。 似乎JPA期望新的日期类型并且不会动态转换它。 我希望如果将一个参数传递给已注册AttributeConverter的类型的setParameter() ,它将由转换器自动转换。 但似乎并非如此,至少不使用EclipseLink 2.6.2 : java.lang.IllegalArgumentException: You have attempted to set a value of type class java.util.Date for parameter closeDate with expected type of class java.time.LocalDate from […]

JPA查询创建顺序

我正在尝试自己学习Spring,我打算通过创建一个博客网络应用程序来做到这一点。 我已经有了基本的博客function,这是一个显示博客post的页面,以及一个提交表单的页面。 显示博客post的页面显示了最新的博客文章,以及数据库中所有博客post的标题列表。 为了从数据库中获取博客文章的有序列表,我首先在我的Repository界面中创建了一个sql查询。 这可行,但现在我想使用我可以在界面中键入方法名称而不是硬编码的sql的function。 我在这里找到了支持的关键字: http : //docs.spring.io/spring-data/jpa/docs/1.4.2.RELEASE/reference/html/jpa.repositories.html#jpa.query-methods.query-creation ,并试图实现它。 所以用我的方法findAllOrderByIdDesc()我试图实现与我的SQL查询相同的东西。 我不确定为什么它不起作用,我想我正确使用了关键字? stackstrace(我不完全理解): 引起:org.springframework.data.mapping.PropertyReferenceException:在org.springframework.data.mapping.PropertyPath.create的org.springframework.data.mapping.PropertyPath。(PropertyPath.java:75)中找不到类型int的属性desc。 (PropertyPath.java:327)org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)位于org.springframework的org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:330)。位于org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)的org.springframework.data.mapping.PropertyPath.from上的data.mapping.PropertyPath.create(PropertyPath.java:353)(PropertyPath.java: 271)org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:245)atg.springframework.data.repository.query.parser.Part。(Part.java:72)org.springframework.data。 repository.query.parser.PartTree $ OrPart。(PartTree.java:188)位于org.spri的org.springframework.data.repository.query.parser.PartTree $ Predicate.buildTree(PartTree.java:277) ngframework.data.repository.query.parser.PartTree $ Predicate。(PartTree.java:257)位于org.springframework.data的org.springframework.data.repository.query.parser.PartTree。(PartTree.java:71)。在org.springframework.data.jpa.repository的org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy $ CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:90)的jpa.repository.query.PartTreeJpaQuery。(PartTreeJpaQuery.java:57) .query.JpaQueryLookupStrategy $ CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:162)org.springframework.data.jpository.repository.query.JpaQueryLookupStrategy $ AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68)at org.springframework.data.repository.core .support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor。(RepositoryFactorySupport.java:290)位于org.springframework.data.reposit的org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:158) Ory.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:162)位于org.springframework.beans.factory.support的org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:44)。 FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:144)… 32更多 我的存储库界面: public interface PostRepository extends CrudRepository { @Query(“select p from Post p order by p.id desc”) Iterable […]

当我使用A JPA Query的getResultList()时,结果是分离还是管理?

当我有一个我调用.getResultList()的JPA查询时,它会返回一个对象列表。 是否管理或分离了该列表中的对象? 也就是说,如果我对它们进行更改,我是否必须担心合并或持久化它们,还是会自动获取这些更改?

JPA:检查实体对象是否已被持久化

有没有一般的方法可以 if(entity is persisted before){ entity = entity.merge(); }else{ entity.persist(); } 所以包含上述逻辑的方法到处都是安全的吗?

JPQL喜欢Case Insensitive

我想在用户表中按名称不区分大小写搜索数据。 @Repository public interface UserRepository extends JpaRepository { @Query(“select u from User u where lower(u.name) like %lower(?1)%”) public List findByNameFree(String name); } 我收到一个错误: 意外的令牌:% 。 我应该在哪里放’%’?

如何调试“找到同一个集合的两个表示”?

我已经找到了几个 关于这个的问题 ,但没有一个问题的完整解释,以及如何调试它 – 答案都是轶事。 问题是在Play 1.2.4 JPA测试中,当我save()模型时,我得到了这个exception: org.hibernate.HibernateException:找到了两个相同集合的表示:models.Position.projects 我想知道: 是否有关于此问题的文档,与Play无关? 这个问题处于hibernate状态,但很多Google上的结果都在Play应用中。 有哪些基本的最佳做法可以避免这个问题? 它是由Play引起的吗? 或者我做错了什么? 如何解决我的具体情况? 这是github上问题的再现 。 我有四个实体: @Entity public class Person extends Model { public String name; @OneToMany(cascade = CascadeType.ALL) public List positions; } @Entity public class Position extends Model { public Position(){} public Position(Company companies) { this.companies = companies; this.projects = new […]