Tag: jpa

如何使用JPA / Hibernate选择DDL主键约束名称

存在专有的hibernate注释,用于指定在DDL生成时使用的外键约束名称 : org.hibernate.annotations.ForeignKey 。 是否还有一种方法来指定主键约束名称 ?

UNION到JPA查询

是否可以在JPA甚至“Criteria Builder”中查询“UNION”? 我正在寻找例子,但到目前为止我没有结果。 有没有人有任何使用它的例子? 或者是原生sql?

Spring Data + JPA具有多个数据源但只有一组存储库

我今天一直在研究这一组,我开始认为我想要做的事情可能是不可能的,所以我转向你,强大的Stackoverflow,寻求帮助。 我正在用Java构建RESTful服务平台,Spring Data 3.1.2 + JPA作为我的持久层(如此处所述 )。 我的数据模型对象都是作为扩展Spring JpaRepository接口的接口实现的。 我已经将所有内容连接起来并且使用单个数据源工作得很好,如本示例所示(请注意,显示的数据源是Derby,但这仅用于开发目的;在生产中,我们将使用Oracle): 问题是该应用程序需要连接到多个(Oracle)数据库。 每个传入请求中包含的凭据将包含一个字段,该字段告知应用程序要转到哪个数据库以满足该请求。 每个数据库的模式都是相同的,因此不需要为每个数据库提供单独的存储库接口。 经过相当数量的谷歌搜索,很明显这是一个常见的情况。 以机智: 使用Spring Data JPA的多个数据库 Spring + Hibernate + JPA +多个数据库 如何使用多个数据源设置spring数据jpa 这是一篇由(前?)Spring开发人员撰写的博客文章,它与手头的主题实际上并不相关,但有人在评论中提出了这个post,作者回复了一些信息: http://blog.springsource.org/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/#comment-198835 似乎正在出现的主题是解决此问题的方法是定义多个EntityManagerFactories,并将每个EntityManagerFactories连接到适当的存储库,如下所示: 但是,正如我所提到的,我希望在所有数据源中重用我的存储库,因此这种方法似乎不起作用。 我知道我的代码中没有任何方法可以从请求中获取相关的信息,并使用它来确定要使用的数据源(或EntityManagerFactory)。 我正在努力的部分是如何获取该数据源/ EntityManagerFactory的句柄并将其“注入”我的存储库对象。 有任何想法吗?

spring mvc date format with form:input

我有hibernate实体和bean: @Entity public class GeneralObservation { @DateTimeFormat(pattern = “dd/MM/yyyy”) Date date; @Column public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } } 我也有 @InitBinder protected void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat(“dd/MM/yyyy”); binder.registerCustomEditor(Date.class, new CustomDateEditor( dateFormat, false)); } 和 form:input id = “datepicker” name=”date” itemLabel=”date” path=”newObservation.date” […]

使用JPA在PostgreSQL中保留UUID

我试图在PostgreSQL中持久化一个使用UUID作为主键的实体。 我已经尝试将其作为简单的UUID持久化: @Id @Column(name = “customer_id”) private UUID id; 有了上面的内容,我收到了这个错误: ERROR: column “customer_id” is of type uuid but expression is of type bytea Hint: You will need to rewrite or cast the expression. Position: 137 我也尝试将UUID作为byte []保持无效: @Transient private UUID id; @Id @Column(name = “customer_id”) @Access(AccessType.PROPERTY) @Lob protected byte[] getRowId() { return id.toString().getBytes(); } protected […]

强制刷新集合JPA entityManager

我正在使用SEAM和JPA(实现为Seam Managed Persistance Context),在我的支持bean中,我将一组实体(ArrayList)加载到支持bean中。 如果另一个用户修改了不同会话中的某个实体,我希望将这些更改传播到我的会话中的集合,我有一个方法refreshList()并尝试了以下… @Override public List refreshList(){ itemList = itemStatusDAO.getCurrentStatus(); } 使用以下查询 @SuppressWarnings(“unchecked”) @Override public List getCurrentStatus(){ String s = “SELECT DISTINCT iS FROM ItemStatus iS “; s+=”ORDER BY iS.dateCreated ASC”; Query q = this.getEntityManager().createQuery(s); return q.getResultList(); } 重新执行查询,这只返回我已经拥有的相同数据(我假设它使用的是第一级缓存而不是命中数据库) @Override public List refreshList(){ itemStatusDAO.refresh(itemList) } 调用entityManager.refresh() ,这应该从数据库刷新但是我得到一个javax.ejb.EJBTransactionRolledbackException: Entity not managed当我使用它时javax.ejb.EJBTransactionRolledbackException: Entity not managedexception,通常我会在调用.refresh()之前使用entityManager.findById(entity.getId) […]

Hibernate本机查询 – char(3)列

我在Oracle中有一个表,其中SC_CUR_CODE列是CHAR(3) 当我做: Query q2 = em.createNativeQuery(“select sc_cur_code, sc_amount from sector_costs”); q2.setMaxResults(10); List rs2 = q2.getResultList(); for (Object[] o : rs2) { System.out.println(“>>> cur=” + o[0]); } 我看到cur=E和cur=U而不是cur=EUR和cur=USD o[0]是java.lang.Character 我怎样才能获得EUR和USD的全部价值?

小面片应用程序中的javax.persistence.TransactionRequiredException

我试图从一个小的facelet应用程序将一些值保存到MySql数据库,但不断收到此错误。 我有一个JPS页面和一个servlet的相同的应用程序,它与大致相同的逻辑工作得很好,这是我第一次尝试使用facelets所以它可能只是一些愚蠢但我会帮助你。 谢谢 错误 javax.faces.el.EvaluationException: javax.persistence.TransactionRequiredException at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at […]

JPA:加入JPQL

我以为我知道如何在JPQL使用JOIN但显然不是。 谁能帮我? select b.fname, b.lname from Users b JOIN Groups c where c.groupName = :groupName 这给了我例外 org.eclipse.persistence.exceptions.JPQLException Exception Description: Syntax error parsing the query Internal Exception: org.eclipse.persistence.internal.libraries.antlr.runtime.EarlyExitException Users与Groups具有OneToMany关系。 Users.java @Entity public class Users implements Serializable{ @OneToMany(mappedBy=”user”, cascade=CascadeType.ALL) List groups = null; } Groups.java @Entity public class Groups implements Serializable { @ManyToOne @JoinColumn(name=”USERID”) private Users user; […]

错误:无法为具有多个返回的查询创建TypedQuery

我尝试用java和jpa做函数searchBook。 我有2个class,分别是媒体和书。 本书扩展了媒体。 我将数据保存在不同的表中。 我尝试从下面的查询中选择数据: TypedQuery query = em.createQuery( “SELECT m.title, b.isbn, b.authors” + ” FROM Book b, Media m” + ” WHERE b.isbn = :isbn” + ” OR lower(m.title) LIKE :title” + ” OR b.authors LIKE :authors”, Media.class); query.setParameter(“isbn”, book.getisbn()); query.setParameter(“title”, “%” + book.getTitle().toLowerCase() + “%”); query.setParameter(“authors”, “%” + book.getAuthors() + “%”); bookList = […]