Tag: entitymanager

使用java查询MySQL数据库

伙计们,简单地说,我有一个带有文本输出框的java应用程序。 我想查询Db并将输出显示到文本框中。 实施例I具有带有两列food和color的Db 我想 : SELECT * in Table WHERE color = ‘blue’ 有什么建议么?

会话bean中的EntityManagerexception处理

我有一个带有注入的EntityManager em的托管无状态会话bean。 我想要做的是拥有一个具有唯一列的数据库表。 然后我运行一些试图插入实体的算法。 如果实体存在,则会更新或跳过它。 我想要这样的东西: try { em.persist(cd); em.flush(); } catch (PersistenceException e) { // Check if the exception is DatabaseException and ConstraintViolation // Update instead or skip it } 问题是我只能捕获PersistenceException 。 没有捕获DatabaseException 。 很遗憾,因为只有DatabaseException有一个名为getDatabaseErrorCode()方法,我想用它来检查重复的条目。 我不理解它,因为PersistenceException.getCause()返回DatabaseException 。 所以我的问题是:如何捕获DatabaseException并检查MySQL错误代码? 感谢您对此的任何想法和经验。

EJB:在PostConstruct方法中使用EntityManager

在构造bean之后,我想使用EntityManager从数据库中检索数据。 在构造函数中是不可能的,因为在调用构造函数之后注入EntityManager。 所以我尝试在用@PostConstruct注释的方法中做到这一点。 根据API,在完成所有注入后调用PostConstruct方法。 执行查询有效,但它总是返回一个空列表。 如果我在其他方法中使用相同的查询,则返回正确的结果。 有谁知道,为什么它在PostConstruct方法中不起作用? @Stateful(mappedName = “price”) @Singleton @Startup public class PriceManagementBean implements PriceManagement { @PersistenceContext private EntityManager em; private List priceSteps = Collections.synchronizedList(new ArrayList()); public PriceManagementBean(){ } @PostConstruct public void init(){ javax.persistence.Query query = em.createQuery(“SELECT ps FROM PriceStep ps”); List res = query.getResultList(); ….. } }

PersistenceAnnotationBeanPostProcessor是否可以使用?

根据其JavaDoc,PersistenceAnnotationBeanPostProcessor似乎负责使用注释@PersistenceContext注入EntityManager。 它似乎暗示如果没有在Spring应用程序上下文xml中声明这个bean,@ PerersContext注释将不起作用。 但是,根据我的实验,这不是事实。 persistence.xml中 Spring应用程序上下文XML <!– –> 在UserDAOImpl @Repository(“userDao”) public class UserDaoImpl implements UserDao { @PersistenceContext protected EntityManager entityManager; @Transactional public void save(User user) { entityManager.persist(user); } } 无论我是注释还是取消注释persistenceAnnotation bean,结果都是一样的。 留下豆子并没有什么坏处,但是这种豆的用途是什么? 我使用的是Spring 3.0.5。 有人可以提供一个场景,取出这个bean会导致失败吗? 另外,我不喜欢创建一个空的持久性单元来愚弄Spring。 幸运的是,这个问题已在Spring 3.1.0中得到解决。

entityManager.getTransaction()。rollback()分离实体?

我有以下代码: EntityManagerFactory emf = Persistence.createEntityManagerFactory(“test”) EntityManager entityManager = emf.createEntityManager() User user = entityManager.find(User.class, 0); entityManager.getTransaction().begin(); entityManager.getTransaction().rollback(); entityManager.refresh(user); 这会在第四行抛出IllegalArgumentException,说“Entity not managed”。 如果我将第三行更改为.commit()而不是.rollback() ,一切似乎都正常。 这里发生了什么? 我可以防止这种情况发生吗? 更新: @DataNucleus指引我走向PersistenceContext。 如何更改代码中的持久性上下文?

实体管理器不在JavaFX中工作

我正在使用数据库中的持久性单元和实体类,所有这些都在JavaFx fxml应用程序中,我成功地将所有表作为模型中的实体导入,问题是当我尝试插入实体时出现exception和错误,这是我的整个代码 public class SampleController implements Initializable { @PersistenceContext(unitName=”RawdaPU”) private EntityManager em; @FXML private Label label; @FXML private void handleButtonAction(ActionEvent event) { Moyendidactique moyenDidactique = new Moyendidactique(“1”, “moyen1”, “Type1”); em.persist(moyenDidactique); em.close(); } @Override public void initialize(URL url, ResourceBundle rb) { // TODO } } 这是我按下按钮时获得的完整错误(当触发handleButtonAction时) java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1440) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) […]

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

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

Hibernate EntityManager,它应该被用作单例吗?

我没有使用Spring,所以我在一个类中创建一个EntityManager实例。 我使用Hibernate-Eclipse逆向工程来自动生成类。 这些类都有一个EntityManager实例。 我不是100%确定Hibernate如何与EntityManager一起工作,所以我想知道这个类(EntityManager)的这么多实例是否可以,例如,交易会出现问题吗? 我是否应该创建一个单独的类来为所有其他类分发EntityManager的静态实例? 或者没关系? 编辑:我看到有一些名为@PersistenceContext的东西,它似乎没有将我的persistence.xml作为bean加载到实例变量中,这个function是否需要spring? (我得到空指针exception,因为它从未被注入) 从我尝试使用@persistencecontext的代码片段 @PersistenceContext(unitName = “manager1”) private EntityManager entityManager; 我的persistence.xml org.hibernate.ejb.HibernatePersistence

如何在Spring Roo中使用JUnit测试? (EntityManager的问题)

我正在尝试为Spring Roo项目编写JUnit测试。 如果我的测试需要使用实体类,我会得到以下exception: java.lang.IllegalStateException: Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?) Spring Aspects JAR看起来配置正确。 特别是,我在pom.xml文件中有以下内容: org.springframework spring-aspects ${spring.version} 和 true org.springframework spring-aspects 1.6 1.6 当没有从JUnit测试中调用时,使用实体类的类工作正常。 知道如何设置,以便从JUnit测试中注入实体管理器吗? 这是我的Test类(或多或少): public class ServiceExampleTest { @Test public void testFoo() { FooService fs = new FooServiceImpl(); Set foos = fs.getFoos(); […]

我应该多久创建一个EntityManager?

我有一个EntityManagerFactory ,我可以为其创建一个(或多个) EntityManager实例。 我正在使用Servlet环境,并且我有一个EntityManagerFactory连接到servlet(通过servlet上下文),它在servlet的生命周期内共享(因此,对所有用户而言)。 我可以做以下其中一项: 为我的servlet的生命周期创建一个EntityManager(例如,在所有用户之间共享) 为每个用户创建一个(因此每个用户在HttpSession中获得自己的) 为每个HTTP请求创建一个(例如,通过实例化一个新请求并在doGet方法结束时关闭它) 哪个最合适? 创建EntityManager的成本是否显着? 如果我执行单个共享EntityManager,是否存在单个事务范围(即独立用户之间的更新可能会提交其他更改)?