如何在DAO中使用EntityManager创建搜索方法?

时间:2014-08-11 11:18:16

标签: java ejb dao

我正在研究会话bean(EJB3.0),我需要为客户端制作搜索方法(在表格中)。

我有两个表(TB1,TB2)和一些列(id,col2,col3)

对于搜索我正在使用这样的构造:

public TB1 findTB1( TB1 tb1 ) throws Exception{
    if (tb1.getId() == null ){
        _entityManager.persist(tb1);
         }
         else{


            return (tb1);
         }
    }
}

是不是?

1 个答案:

答案 0 :(得分:0)

没有用。

首先,我想到了坚持不懈的部分。当使用find方法时,我通常不希望我的实体被持久化到DB中。

其次,返回你拥有的对象可能不起作用(可能不会)。那是因为你不能保证tb1,即使它的id被填充,目前也是一个托管bean。另外,我希望find方法能够从DB中获取最新的行,而不是我传递的参数。

正确的方法是使用find方法:

return _entityManager.find(TB1.class, tb1.getId());

在更高级别处理id == null的情况。当您可能没有要搜索的主键时,请不要搜索。