【问题标题】:Problem test with seam and hibernate (JPA)使用接缝和休眠 (JPA) 进行问题测试
【发布时间】:2010-06-14 16:01:23
【问题描述】:

我正在开发一个使用 Seam 和 Hibernate(使用 Jboss 5.1 服务器)的应用程序。

我的 Eclipse 中有 4 个项目(Portail、Portail-ear、Portail-ejb 和 Portail-test)。 当我启动应用程序时,一切正常(我可以进入 localhost:8080)。

但是当我想在测试项目中实现一些测试时,我遇到了一个问题。下面是用户创建测试的代码:

public class UserTest extends SeamTest {  

 @PersistenceContext
 IdentityManager identityManager;

 @PersistenceContext
 private EntityManager entityManager;

 @Test  
 public void testUserCreate() throws Exception {  
         new ComponentTest() {  
             @Override  
             protected void testComponents() throws Exception {

  Log log = Logging.getLog(UserTest.class);
  Log testLog = Logging.getLog(Log.class);

                (UserAction)Component.getInstance("userAction", true);
  setField(ua, "entityManager", entityManager);
  setField(ua, "identityManager", identityManager);
  setField(ua, "log", testLog);
  ua.setCreation(true);
  ua.setConfirm("toto");
  Portailrole portailrole = null;
  try{
      log.info("/****** CHERCHE ROLE ******/");
      if (entityManager == null)
      log.info("entityManager is null");
      Query query = entityManager.createQuery("from Portailrole where name=:rolename").setParameter("rolename", "Admin");
                    portailrole = (Portailrole) query.getSingleResult();
      log.info("/****** FIN CHERCHE ROLE ******/");
  } 
  catch (Exception e) {
           log.info("Exception portailrole {0} {1}", e.getClass(), e.getMessage());
  }
  log.info("testUserCreate : {0}", "role trouvé?");
  Set<Portailrole> portailroles = new HashSet<Portailrole>();
  if (portailrole != null) { 
   log.info("testUserCreate : {0}", portailrole.getName());
   portailroles.add(portailrole);
  }

  Portailuser testUser = new Portailuser(new Long(99999999),"nom","prenom","0123455689","0123455689", "0123455689","toto@toto.fr","login", "toto","FFEFAA", true, portailroles);
  log.info("testUserCreate : {0}", "user créé");
  ua.setUser(testUser);
  if ("failure".equals(ua.save())) {
            log.info("testUserCreate : {0}", "echec du save");
   assert false;
  }
  log.info("testUserCreate : {0}", "user sauvé");
         }.run();  
     }   

而我的 entityManager 为空。我认为 @PersistenceContext 注释在我的情况下不起作用,但我不明白为什么。

我的休眠配置在 META-INF/persistence.xml 的 EJB 项目中

有人有想法可以帮助我吗?

谢谢。

【问题讨论】:

    标签: java hibernate jpa jakarta-ee seam


    【解决方案1】:

    使用 Component.getInstance() 检索 ComponentTest.testComponents() 方法中的 EntityManager,而不是尝试注入它:

    EntityManager em = (EntityManager) Component.getInstance("entityManager");
    

    【讨论】:

      猜你喜欢
      • 2014-08-08
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2013-05-20
      • 2019-02-08
      • 1970-01-01
      相关资源
      最近更新 更多