我正在研究会话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);
}
}
}
是不是?
答案 0 :(得分:0)
没有用。
首先,我想到了坚持不懈的部分。当使用find方法时,我通常不希望我的实体被持久化到DB中。
其次,返回你拥有的对象可能不起作用(可能不会)。那是因为你不能保证tb1,即使它的id被填充,目前也是一个托管bean。另外,我希望find
方法能够从DB中获取最新的行,而不是我传递的参数。
正确的方法是使用find
方法:
return _entityManager.find(TB1.class, tb1.getId());
在更高级别处理id == null的情况。当您可能没有要搜索的主键时,请不要搜索。