草庐IT

QueryDSL-JPA

全部标签

java - 如何在 JPA/Hibernate 中使用 @Id 和字符串类型?

我有一个包含字符串类型主键的实体。这个实体模型如下:@EntitypublicclassMyEntity{@Id@Column(name="PR_KEY",unique=true)privateStringprKey;........}但是我遇到了TypeMismatch的问题。org.hibernate.TypeMismatchException:Providedidofthewrongtype.Expected:classjava.lang.String,gotclassjava.lang.Long 最佳答案 如果不指定id生成

java - Spring数据JPA和可以为空的参数

我的理解是,使用Spring数据JPA,我无法使用查询方法来获取列等于给定非空方法参数的所有行,并使用相同的方法来获取该列为NULL的所有行。参数为空。对吗?所以我必须在我的JAVA代码中区分这一点,并且我必须使用单独的查询方法明确要求空值,如下例所示?//QuerymethodsListfindByParameter(Parameterparameter);ListfindByParameterIsNull();...Listresult=newArrayList();if(parameter==null)result=findByParameterIsNull();elseresu

java - 使用 JPA EntityManager 进行批量插入

有没有一种方法可以让我们使用JPAEntityManager来使用批量插入。我知道没有直接的方法可以实现这一点,但必须有某种方法来实现这种机制。实际上,对于每个插入操作,我需要300毫秒,我想使用批量插入而不是单次插入来减少。这是我当前正在为单个插入执行的代码@PersistenceContext(unitName="testing")EntityManagereM;Queryquerys=this.eM.createNativeQuery(insertQuery);for(Strings:someList){//settingparametersquerys.executeUpdat

java - 如何使用 JPA 检查记录是否存在

我想知道给定记录是否存在于数据库中。到目前为止,我已经通过编写JPA查询并通过getSingleResult()方法运行它来实现这一点。如果具有给定参数的记录不存在,这将抛出NoResultException。当然,记录不是必须存在的,所以有时这是正常行为,这就是为什么我问自己,是否有必要抛出一个我必须通过catchblock处理的异常?据我所知异常处理的成本是相当大的,所以我对这个解决方案不是很满意,而且我什至不需要对象,我只需要知道它在数据库中的存在。有没有更好的方法来检查一个对象是否存在?例如。使用getResultList()并检查它的大小可能吗?

java - JPA Criteria API IN 表达式 参数列表

是否可以在CriteriaAPI.in表达式中使用参数列表?我有这样的事情:Listlist=newArrayList();list.add((long)1);list.add((long)2);list.add((long)3);CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQuerycriteriaQuery=cb.createQuery(Bewerbung.class);Rootbewerbung=criteriaQuery.from(Bewerbung.class);criteriaQuery.select(bewerbun

java - Spring Data JPA NamedStoredProcedureQuery 多个输出参数

我有一个简单的存储过程,用于测试SpringDataJPA存储过程功能。createorreplaceprocedureplus1inout(arginint,res1outint,res2outint)isBEGINres1:=arg+1;res2:=res1+1;END;我的代码是:@RepositorypublicinterfaceAdjudConverDateSPRepositoryextendsJpaRepository{@Procedure(name="plus1")Object[]plus1(@Param("arg")Integerarg);}@Entity@NamedS

java - 为没有 Hibernate Annotations 的 PostgreSQL 文本类型更正 JPA Annotation

我正在使用以下方式开发应用程序:Java1.7JPA(包含在javaee-api7.0中)hibernate4.3.8.FinalPostgreSQL-JDBC9.4-1200-jdbc41PostgreSQL9.3.6我想对一些字符串属性使用PostgreSQL文本数据类型。据我所知,在JPA中这应该是正确的注释,在PostgreSQL中使用文本:@EntitypublicclassProduct{...@LobprivateStringdescription;....}当我这样注释我的实体时,我遇到了如下所示的错误:http://www.shredzone.de/cilla/pag

java - 如何在运行时检索 JPA 中实体的映射表名称?

是否可以确定实体的native表名?如果存在Table注释,这很容易:entityClass.getAnnotation(Table.class).name()但是如果没有Table注解呢?Hibernate通过Configuration提供此信息。类:configuration.getClassMapping(entityClass.getSimpleName()).getTable().getName()JPA中有类似的东西吗? 最佳答案 这是我在EclipseLink中使用的方法(无映射文件):/***Returnstheta

java - 如何使用 JPA 和 Hibernate 在非主键上连接表

我有3个模型User、House、UserHouseMap。我需要通过map访问用户的房子。唯一的问题是这是一个旧数据库,我无法改变我需要使用user.name将User映射到UserHouseMap的事实,这是一个非主键。Hibernate不断给我错误,说我需要将它作为主键,或者我收到错误说发生JPA错误(无法构建EntityManagerFactory):无法找到具有逻辑名称的列:org.hibernate中的名称.mapping.Table(users)及其相关的超表和副表我已尝试将@Formula作为一种解决方法,但没有奏效。我也试过@JoinColumnOrFormula但这

java - JPA Map<String,String> 映射

如何在不使用Hibernate的类的情况下在JPA中映射Map? 最佳答案 尽管SubhenduMahanta给出的答案是正确的。但是@CollectionOfElements已被弃用。您可以使用@ElementCollection代替:@ElementCollection@JoinTable(name="ATTRIBUTE_VALUE_RANGE",joinColumns=@JoinColumn(name="ID"))@MapKeyColumn(name="RANGE_ID")@Column(name="VALUE")privat