我做了一个REST服务项目,我通过DriverManager.getConnection(url,user,pass)执行CRUD操作。
现在我的asignment已更改为在Jboss 7.1.1中定义连接并且工作正常(在Jboss管理控制台中测试数据源返回正数,并且sqljdbc驱动程序在MS SQL Server Management Studio的活动监视器中也显示为活动状态)。
我倾向于使用EntityManager来运行我在旧项目中使用的本机查询,而不使用实体生成实体或编写查询(这就是下一次作业)。
我从我在研究中发现的内容中写了一个小测试代码,如下:
public class Test {
@PersistenceContext(unitName="InternshipIS") protected EntityManager entityManager;
public void getQuerys(){
String sqlQuery = "SELECT * from InternshipIS.dbo.Employee";
Query q = entityManager.createNativeQuery(sqlQuery);
System.out.println(q.getResultList().get(2));
}
当它到达下一行时,它会抛出NullPointerException。
Query q = entityManager.createNativeQuery(sqlQuery);
请告诉我我搞砸的地方,以及是否需要完整的stacktrace / persistence.xml / standalone.xml或其他任何内容才能将其添加到我的帖子中。
PS:这不是一个maven项目。这是一个动态Web项目,当这个转移开始时我转换为JPA。
答案 0 :(得分:0)
我通过进行以下调整来解决问题:
public class Test {
public void getQuerys(){
EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("InternshipIS");
EntityManager em = emFactory.createEntityManager();
String sqlQuery = "SELECT * FROM Employee";
Query q = em.createNativeQuery(sqlQuery);
}
}
答案 1 :(得分:-1)
String sqlQuery = "SELECT * from InternshipIS.dbo.Employee";
在此查询中,Select * from InternshipIS
对于sql是可以理解的。
但我认为您在查询中将数据库名称与表连接起来。哪个不起作用并且查询返回空值。