草庐IT

jpa-criteria

全部标签

java - 使用 JPA 进行更新时如何排除实体字段

有没有办法让字段在更新操作时非持久化,但在使用JPA-Hibernate4创建操作时持久化?我这样试过@Transient@Id@Column(name="USER_NAME",nullable=false,length=75)privateStringuserName;但是使用@Transient注释,该字段在所有CRUD操作中都是transient的,我想要一种方法来指定仅在此操作上是持久的(创建)。有办法吗?谢谢! 最佳答案 您需要将@Column注解的updatable属性设置为false:@Column(name="USE

java - 在 JPA 中使用 MAX() 的 SELECT 查询无法获得正确的值

我是JPA的新手,当我尝试使用MAX()函数查询数据库时遇到问题。我的功能代码如下。谁能帮我?谢谢。publicintgetMaxId(){entityManager=this.entityManagerFactory.createEntityManager();Queryquery=entityManager.createQuery("SELECT*FROMuserWHEREid=(SELECTMAX(u.id)FROMuseru)");Useruser=(User)query.getSingleResult();intid=user.getId();returnid;}我正在使用J

java - Spring Boot JPA - OneToMany 关系导致无限循环

我有两个具有简单@OneToMany关系的对象,如下所示:parent:@EntitypublicclassParentAccount{@Id@GeneratedValueprivatelongid;privateStringname;@OneToMany(fetch=FetchType.EAGER,mappedBy="parentAccount")privateSetlinkedAccounts;}child:@EntitypublicclassLinkedAccount{@Id@GeneratedValueprivatelongid;@ManyToOne(optional=fals

java - JPA CriteriaQuery 的简单 where 条件

所以这是我第一次尝试使用JPA和CriteriaQuery。我有以下(简化的)实体:@Entity@Table(name="hours")@XmlRootElementpublicclassHoursimplementsSerializable{@EmbeddedIdprotectedHoursPKhoursPK;@Column(name="total_hours")privateIntegertotalHours;@JoinColumn(name="trainer_id",referencedColumnName="id",nullable=false,insertable=fals

java - 如何使用 JPA 或 HQL 动态排序多对多关系?

我有这样的映射:@ManyToMany(cascade=CascadeType.PERSIST)@JoinTable(name="product_product_catalog",joinColumns={@JoinColumn(name="product_catalog",referencedColumnName="product_catalog")},inverseJoinColumns={@JoinColumn(name="product",referencedColumnName="product")})publicListproducts=newArrayList();我可以

java - 没有可用的事务性 EntityManager - 使用 JPA Api,Hibernate Session 出错

我正在尝试从注入(inject)的EntityManager中解包HibernateSession,因为我需要使用Hibernate的nativeCriteriaAPI。当我尝试使用Criteria时出现以下异常:Causedby:java.lang.IllegalStateException:NotransactionalEntityManageravailableatorg.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEnti

java - Spring 4 + Hibernate 5 = org.springframework.orm.jpa.EntityManagerHolder 无法转换为 org.springframework.orm.hibernate5.SessionHolder

好吧,在开始一个新的java项目和集成spring/hibernate等工具方面,我是一个完全的初学者。事实上,这是我第一次做。所以我相信这个错误对你们来说是显而易见的。猜测:我期望的session工厂不是spring注入(inject)的那个。错误的依赖关系。错误[2016-07-2801:29:14.869]boot-22234ERROR[http-nio-8080-exec-1]---[dispatcherServlet]:Servlet.service()forservlet[dispatcherServlet]incontextwithpath[]threwexception

java - 了解 EJB3/JPA 容器级事务和隔离级别

考虑一下我正在使用的一些代码的简化View:@Stateless(...)@Remote(...)@TransactionAttribute(TransactionAttributeType.MANDATORY)publicclassFirstEjbType{@EJB(...)privateSecondEjbTypesecondEjb;@EJB(...)privateThirdEjbTypethirdEjb;publicvoiddoSomething(){secondEjb.doSomething();//WRITESSOMETHINGTOTHEDATABASEthirdEjb.doS

java - 使用 JPA 2.1/Hibernate 4 将值列表传递给存储过程

我有一个存储过程,它接受一个字符串列表(并遵循存储过程的限制,accordingtoHibernatedocs):PROCEDUREcount_active_esc(p_countOUTNUMBER,p_codesINstring_list);其中string_list是自定义类型:CREATEORREPLACETYPEstring_listISTABLEOFVARCHAR(100)并希望从JPA实体管理器(anewfeatureinJPA2.1)中调用它。我尝试使用数组:StoredProcedreQueryquery=entityManager.createNamedStoredP

java - 如何以编程方式验证 JPQL(JPA 查询)

我正在寻找一种以编程方式验证JPA查询的方法。在(Spring)事务中,我有一个要运行的查询列表。这些查询可能包含我想捕获的语法错误,以便交易可以继续。我的第一个想法是使用EntityManager并创建和执行我的查询,以防它们失败,然后我可以简单地捕获异常、记录警告并继续。问题是当出现问题时,事务被标记为只回滚,所以我当前的事务被回滚,这不是我想要的。在伪代码中,它或多或少是这样的:EntityManagerem=...;em.getTransaction().begin();Listqueries=Arrays.asList("selectefromDepartmentd","se