带有QueryDSL的javax.naming.NoInitialContextException

时间:2018-02-12 08:32:49

标签: java hibernate jndi jpql querydsl

我正在尝试使用/* Cache the player. */ var x = document.getElementById("sound-player"); /* Create an IIFE and execute it recursively. */ (function playRecursively (current, last) { x.src = secilen[current]; x.play(); x.onended = function() { /* Play the next, if the current is not the last. */ if (current < last) playRecursively(++current, last); else alert("bitti"); }; })(0, secilen.length - 1); 编写一个简单的查询,但我的尝试失败并出现以下异常。

QueryDSL

我尝试通过以下方式执行查询。

Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

另一种方式。

SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();

JPQLQuery query = new HibernateQuery(session);

QClient t = QClient.client;

List<Client> lst = query.from(t).list(t);
System.out.println(lst.size());

如上所述,这两种方式都失败了同样的例外。

我使用的是Postrges DB,参数在 EntityManagerFactory emf = Persistence.createEntityManagerFactory("my.package.entities"); EntityManager em = emf.createEntityManager(); JPAQuery query = new JPAQuery(em); QClient t = QClient.client; List<Client> lst = query.from(t).list(t); System.out.println(lst.size());

中指定

我需要设置更多功能吗?

1 个答案:

答案 0 :(得分:0)

javax.naming包包含JNDI API。由于它只是一个API,而不是一个实现,因此您需要告诉它使用哪个JNDI实现。这些实现通常特定于您尝试与之交谈的服务器。

要指定实现,请在构造InitialContext时传入Properties对象。这些属性指定要使用的实现以及服务器的位置。默认的InitialContext构造函数仅在存在系统属性时才有用,但属性与手动传递它们的属性相同。

至于您需要设置哪些属性,这取决于您的服务器。您需要搜索这些设置并将其插入。

样品:

      Properties properties = new Properties();
      properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
      properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
      properties.put("jnp.socket.Factory", "org.jnp.interfaces.TimedSocketFactory");
      properties.setProperty("java.naming.provider.url", "jnp://" + remoteHost + :1099");
      context = new InitialContext(properties);

寻找这个

Issue