使用entitymanager进行基本CRUD操作

时间:2016-01-24 11:12:19

标签: java sql-server jpa jboss

我做了一个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。

2 个答案:

答案 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是可以理解的。 但我认为您在查询中将数据库名称与表连接起来。哪个不起作用并且查询返回空值。