Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有取消选中或不安全操作的实体bean_Java_Ejb - Fatal编程技术网

Java 具有取消选中或不安全操作的实体bean

Java 具有取消选中或不安全操作的实体bean,java,ejb,Java,Ejb,我正在学习实体Bean,当我在做我的实验时,我遇到了这个错误。我选择为实体类创建一个会话Bean(对于实体产品)。此文件由NetBeans自动创建。但是它通知ProductsFacade.java使用未经检查或不安全的操作。 代码如下: @Stateless public class ProductsFacade implements ProductsFacadeRemote { @PersistenceContext(unitName = "NhungBHSE02082_SE0606_

我正在学习实体Bean,当我在做我的实验时,我遇到了这个错误。我选择为实体类创建一个会话Bean(对于实体
产品
)。此文件由NetBeans自动创建。但是它通知
ProductsFacade.java使用未经检查或不安全的操作。

代码如下:

@Stateless
public class ProductsFacade implements ProductsFacadeRemote {
    @PersistenceContext(unitName = "NhungBHSE02082_SE0606_AdvJava_Lab10_11-ejbPU")
    private EntityManager em;

    public void create(Products products) {
        em.persist(products);
    }

    public void edit(Products products) {
        em.merge(products);`enter code here`
    }

    public void remove(Products products) {
        em.remove(em.merge(products));
    }

    public Products find(Object id) {
        return em.find(Products.class, id);
    }

    public List<Products> findAll() {
        return em.createQuery("select object(o) from Products as o").getResultList();
    }

    public List<Products> findRange(int[] range) {
        Query q = em.createQuery("select object(o) from Products as o");
        q.setMaxResults(range[1] - range[0]);
        q.setFirstResult(range[0]);
        return q.getResultList();
    }

    public int count() {
        return ((Long) em.createQuery("select count(o) from Products as o").getSingleResult()).intValue();
    }
}
@无状态
公共类ProductsFacade实现ProductsFacadeRemote{
@PersistenceContext(unitName=“NhungBHSE02082\u SE0606\u AdvJava\u Lab10\u 11-ejbPU”)
私人实体管理者;
公共无效创建(产品){
em.persist(产品);
}
公共作废编辑(产品){
em.merge(products);`在此处输入代码`
}
移除公共空间(产品){
em.remove(em.merge(products));
}
公共产品查找(对象id){
返回em.find(Products.class,id);
}
公共列表findAll(){
返回em.createQuery(“将产品中的对象(o)选择为o”).getResultList();
}
公共列表findRange(int[]范围){
Query q=em.createQuery(“从产品中选择对象(o)作为o”);
q、 setMaxResults(范围[1]-范围[0]);
q、 setFirstResult(范围[0]);
返回q.getResultList();
}
公共整数计数(){
return((Long)em.createQuery(“将产品中的计数(o)选择为o”).getSingleResult()).intValue();
}
}
返回非泛型的
列表
,并隐式转换为
列表
。现在因为,
List
是非泛型的,编译器没有必要的信息来确保它实际上是
产品的列表。这就是编译器显示警告的原因

尽管编译器不知道,但您知道它实际上总是一个
产品的列表,这保证了强制转换在运行时不会失败,因此您可以在这里用注释
@SuppressWarnings(“未选中”)
来修饰您的方法

@SuppressWarnings("unchecked")
public List<Products> findAll() {
    return em.createQuery("select object(o) from Products as o").getResultList();
}
@SuppressWarnings(“未选中”)
公共列表findAll(){
返回em.createQuery(“将产品中的对象(o)选择为o”).getResultList();
}
这将使警告消失


另外:另一种方法是使用。

警告是由以下方法引起的:

public List<Products> findAll() {
    return em.createQuery("select object(o) from Products as o").getResultList();
}

public List<Products> findRange(int[] range) {
    ...
    return q.getResultList();
}
公共列表findAll(){
返回em.createQuery(“将产品中的对象(o)选择为o”).getResultList();
}
公共列表findRange(int[]范围){
...
返回q.getResultList();
}
内部发生的是
query.getResultList()
返回泛型
列表
。列表中的每个对象都属于
产品类型
。你们知道,但编译器不知道。只能在运行时确定类型。因此,编译器显示警告取消选中或不安全操作。您可以放心地忽略此警告


如果您真的很担心,那么可以将注释
@SuppressWarnings(“unchecked”)
添加到这两个方法中,以使警告消失。

将以下init方法添加到类中。web容器通过调用其init方法初始化servlet。这只发生一次,在加载servlet之后,在它开始服务请求之前。public void init()引发ServletException{并将查找对象的方法放在其中。它返回
列表
而不是
列表
。如果它无法编译:。非常感谢!警告消失了。我刚刚提交了我的实验室。@BeeBee u're welcome:)但请接受答案。如果你不知道这意味着什么,那么这篇帖子是为你准备的: