Tag: openjpa

IBM Websphere JPA配置 – 如何更新persistence.xml

我是EJB 3和JPA的新手。 我在appserver中创建了一个数据源,它是jdbc/AppDataSource 。 默认持久性提供程序保留为com.ibm.websphere.persistence.PersistenceProviderImpl 。 我将默认的jta数据源JNDI名称AppDataSource为AppDataSource本身。 我对JTA和非JTA感到困惑。 它们的区别是什么? 我生成了实体并在bean中创建了一个EntityTransaction对象。 在调用persist()和commit()方法时,我收到一个错误: javax.ejb.EJBException: See nested exception; nested exception is: org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property. Caused by: org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property. openjpa如何在这里展示? 截至目前,我的persistence.xml仅包含实体类名称。 如何使其使用数据源的默认appserver值。 或者我怎样才能在persistence.xml提供jpa提供程序和数据源详细信息的详细信息? 请提供您的意见。

为什么EntityManager为空?

在我的Web应用程序中,我在Apache Tomcat(TomEE)/7.0.37服务器上使用OpenJPA。 我使用Netbeans自动生成类(“来自数据库的实体类……”和“来自实体类的会话Bean ……”)。 在SessionBean(例如UserFacade)我想获得EntityManager: @Stateless public class UserFacade extends AbstractFacade { @PersistenceContext(unitName = “CollDocPU”) private EntityManager em; @Override protected EntityManager getEntityManager() { return em; } } 但是当我通过上面的方式得到它时,我得到了null。 当我通过: @Override protected EntityManager getEntityManager() { EntityManagerFactory emf = Persistence.createEntityManagerFactory(“CollDocPU”); EntityManager ecm = emf.createEntityManager(); return ecm; } ecm不是null,没关系 我的persistence.xml: org.apache.openjpa.persistence.PersistenceProviderImpl model.entity.StudentAddSolution model.entity.Lecturer model.entity.Solution model.entity.Student model.entity.Course model.entity.File model.entity.CourseHasLecturer […]

OpenJPA – 嵌套的OneToMany关系合并问题

在这里发布,因为我没有看到很多兴趣: http : //www.java-forums.org/jpa/96175-openjpa-one-many-within-one-many-merge-problems.html 试图弄清楚这是OpenJPA的问题还是我可能做错了… 我在尝试使用OpenJPA更新包含与另一个实体的一对多关系的实体时遇到问题,该实体与另一个实体具有一对多的关系。 这是我正在谈论的一个简单例子: @Entity @Table(name = “school”) public class School { @Column(name = “id”) protected Long id; @Column(name = “name”) protected String name; @OneToMany(mappedBy = “school”, orphanRemoval = true, cascade = CascadeType.ALL) protected Collection classRooms; } @Entity @Table(name = “classroom”) public class ClassRoom { @Column(name = “id”) protected Long id; @Column(name […]

在一个事务中组合JPA和JDBC操作

所以,我有一个带有一些遗留JDBC调用的应用程序,我需要使用一些额外的JPA操作进行更新。 我需要能够将JDBC调用和JPA调用作为同一数据库事务的一部分。 我正在使用OpenJPA 2.1.1和Postgres 9.1,如果重要的话。 以下代码似乎正常工作 – 我运行了一些基本测试,并且JDBC和JPA语句都执行; 任何一个中的错误都会导致这对语句没有发生(例如,它们是同一个DB事务的一部分)。 它是否有任何我没有看到的问题 – 我违反了一些最佳实践,或者其他原因我不能以这种方式重新使用Connection对象? EntityManager em = _em; //acquired from OpenJPA em.getTransaction().begin(); Connection conn; try { OpenJPAEntityManager oem = (OpenJPAEntityManager) em.getDelegate(); conn = oem.getConnection(); PreparedStatement ps = conn.prepareStatement(myStatement); //initialize parameters in ps ps.executeUpdate(); em.merge(myJpaObject); em.getTransaction().commit(); } finally { if (ps != null && !ps.isClosed()) { ps.close(); } […]

OpenJPA合并/持久化非常慢

我在带有MySQL 5.0 DB的WebSphere Application Server 8上使用OpenJPA 2.2.0。 我有一个对象列表,我想合并到数据库中。 就像是: for (Object ob : list) { Long start = Calendar.getInstance().getTimeInMillis(); em = factory.createEntityManager(); em.getTransaction().begin(); em.merge(ob); em.getTransaction().commit(); em.close(); Long end = Calendar.getInstance().getTimeInMillis(); Long diff = end – start; LOGGER.info(“Time: ” + diff); } 当我运行这个循环时,我需要大约300-600毫秒来合并一个对象。 当我删除行“em.merge(ob);”时 然后我需要“0”毫秒来迭代1个列表对象。 所以我的问题是:我可以做些什么来缩短合并一个对象的时间? 谢谢!

我应该经常调用EntityManager.clear()来避免内存泄漏吗?

我是JPA / OpenJPA的新手,我注意到如果我在持久化实体后没有调用EntityManager.clear() ,我会得到一个OutOfMemoryError (我继续在循环中添加新实体)。 我不确定这是否是预期的行为,或者只是OpenJPA 1.2.1故障。 那么,我是否需要自己明确分离实体? 如果我不是,那么这是一个好习惯吗?

使用Weblogic 10.3记录JPA SQL

通过查看Open JPA网站,我发现我可以使用以下命令记录生成的SQL: 如果我尝试将上述属性添加到我的persistence.xml,我会从weblogic获得以下警告: 任何人都知道控制台中的选项是什么,或者我如何编辑config.xml以输出SQL?

初始化或不初始化JPA关系映射?

在一对多的JPA协会中,它被认为是初始化与空集合的关系的最佳实践? 例如。 @Entity public class Order { @Id private Integer id; // should the line items be initialized with an empty array list or not? @OneToMany(mappedBy=”order”) List lineItems = new ArrayList(); } 在上面的例子中,最好使用默认值为空的ArrayList来定义lineItems吗? 优缺点都有什么?

DDL生成和常规persistence.xml设置(OpenJPA)

概要 我正在尝试运行Java Web应用程序JPA 2.0示例。 编写示例应用程序是为了在Glassfish运行,使用EclipseLink作为JPA提供程序。 我想将它转换为使用OpenJPA作为JPA提供程序在TomEE运行,但我无法获得有关启动和运行OpenJPA任何详细教程。 问题 我无法将persistence.xml转换为使用OpenJPA而不是EclipseLink 。 更具体地说,给定的persistence.xml没有指定: Entity类。 这些必要吗? 所需的JPA提供者。 容器会默认为什么吗? JDBC驱动程序。 如何指定“内存中”DB(仅用于初始测试目的)? 也: 如何在OpenJPA中表达DDL生成属性? 我无法找到OpenJPA用户指南 。 细节 下面是EclipseLink persistence.xml : jdbc/__default 我有以下Entity类: order.entity.LineItem order.entity.LineItemKey order.entity.Order order.entity.Part order.entity.PartKey order.entity.Vendor order.entity.VendorPart 题 有谁知道OpenJPA的等效persistence.xml是什么样的? 或者,如果有人能指出我的OpenJPA教程,该教程涵盖了同样好的问题

使用JPA更新多行

我想更新一个具有colum NAME值为’PCNAME’的表的所有字段。 我想要更新的表名是XYZ。我想只更新一些字段而不保持一些不变。 这将影响许多行而不是单行,因为将有许多行使用NAME =’PCNAME’如何使用JPA.I具有与此表关联的实体类。