Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 如何从列表中进行转换<;对象>;当使用Hibernate查询语言时?_Java_Hibernate_Nhibernate Mapping - Fatal编程技术网

Java 如何从列表中进行转换<;对象>;当使用Hibernate查询语言时?

Java 如何从列表中进行转换<;对象>;当使用Hibernate查询语言时?,java,hibernate,nhibernate-mapping,Java,Hibernate,Nhibernate Mapping,我一直在从事一个hibernate/JPA项目,在开发过程中,我创建了一个方法来检索名为Appel\u Offre.java的对象列表,在运行时发生了一个异常。。。 方法如下: 我有一个对象Appel\u Offre.java和另一个对象Modalite\u Appel\u Offre.java 以下是两个对象的映射: Appel_Offre.java @Entity @Table(name="Appel_offre") public class Appel_Off

我一直在从事一个hibernate/JPA项目,在开发过程中,我创建了一个方法来检索名为Appel\u Offre.java的对象列表,在运行时发生了一个异常。。。 方法如下: 我有一个对象Appel\u Offre.java和另一个对象Modalite\u Appel\u Offre.java 以下是两个对象的映射: Appel_Offre.java

     @Entity
     @Table(name="Appel_offre")
     public class Appel_Offre {

@Id
@Column(name="num_app_offre",nullable=false, updatable=true)
private String num_app_offre;

@Column(name="nom_maitre",nullable=false, updatable=true)
private String nom_maitre;

@Column(name="objet",nullable=false, updatable=true)
private String objet;

@Column(name="date_depot",nullable=false, updatable=true)
@Temporal(TemporalType.TIMESTAMP)
private Date date_depot;

@Column(name="date_soumission",nullable=false, updatable=true)
@Temporal(TemporalType.DATE)
private Date date_soumission;

@Column(name="garantie",nullable=false, updatable=true)
private int garantie;

@Column(name="delai_livraison",nullable=false, updatable=true)
private int delai_livraison;

@Column(name="caution_provisoir_total",nullable=false, updatable=true)
private float caution_provisoir_total;

@Column(name="commentaire",nullable=false, updatable=false)
private String commentaire;

@Column(name="etat",nullable=false, updatable=true)
private String etat;

@OneToMany(targetEntity=Lot.class,mappedBy="appel_offre", cascade= CascadeType.PERSIST,fetch= FetchType.LAZY)
private List<Lot>  lots;

@OneToMany(targetEntity=Modalite_Appel_Offre.class,mappedBy="ao", cascade= CascadeType.PERSIST,fetch= FetchType.EAGER)
private List<Modalite_Appel_Offre>  mod;
在我的方法中,我想通过Modalite\u Appel\u Offre.nom\u mod检索Appel\u Offre的列表,代码如下:

    public static List<Appel_Offre> getAppelOffreByModalite(Modalite_Appel_Offre mod){
    List <Appel_Offre> lm=null;
    try{
         session=sf.openSession();
    session.beginTransaction();
     lm=(List <Appel_Offre>)session.createQuery("from Appel_Offre m , Modalite_Appel_Offre mod where mod.nom_mod= ?").setString(0, mod.getNom_mod()).list();
    }
   catch(Exception e){

   }
    finally{
        session.close();
    }
    return lm;
} 
发生异常:

    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to gest.BO.Appel_Offre
我不明白的是,我正在一个Appel\u Offre列表上循环,循环类型是Appel\u Offre为什么hibernate会触发此异常?
谢谢。

解决此问题的一个更干净的方法是使用和

例如:

List cats = session.createSQLQuery(
    "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
           "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
    "FROM CAT {cat} WHERE ROWNUM<10")
    .addEntity("cat", Cat.class)
.list()
List cats=session.createSQLQuery(
选择{cat}.ID为{cat.ID},{cat}.SEX为{cat.SEX}+
“{cat}.MATE作为{cat.MATE},{cat}.SUBCLASS作为{cat.class},…”+

“从CAT{CAT}中,ROWNUM解决此问题的一个更干净的方法是使用和

例如:

List cats = session.createSQLQuery(
    "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
           "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
    "FROM CAT {cat} WHERE ROWNUM<10")
    .addEntity("cat", Cat.class)
.list()
List cats=session.createSQLQuery(
选择{cat}.ID为{cat.ID},{cat}.SEX为{cat.SEX}+
“{cat}.MATE作为{cat.MATE},{cat}.SUBCLASS作为{cat.class},…”+

“从CAT{CAT}那里ROWNUM我想这是你的问题:

from Appel_Offre m , Modalite_Appel_Offre mod where mod.nom_mod= ? 从Appel_Offre m,Modalite_Appel_Offre mod,其中mod.nom_mod=? 这不仅仅是请求Appel_Offre实例……它还请求Appel_Offre连接到Modalite_Appel_Offre(在FROM子句中有多个表)。 所以,Hibernate为您创建了一个奇怪的列表,它将是这两个表的复合联接:而不仅仅是Appel_of fre实例。 我可能误解了查询应该做什么。但是,无论如何,您只需要FROM子句中的Appel_Offre。类似于:

from Appel_Offre where m.ao = ? 来自Appel_Offre,其中m.ao=?
我想这是你的疑问:

from Appel_Offre m , Modalite_Appel_Offre mod where mod.nom_mod= ? 从Appel_Offre m,Modalite_Appel_Offre mod,其中mod.nom_mod=? 这不仅仅是请求Appel_Offre实例……它还请求Appel_Offre连接到Modalite_Appel_Offre(在FROM子句中有多个表)。 所以,Hibernate为您创建了一个奇怪的列表,它将是这两个表的复合联接:而不仅仅是Appel_of fre实例。 我可能误解了查询应该做什么。但是,无论如何,您只需要FROM子句中的Appel_Offre。类似于:

from Appel_Offre where m.ao = ? 来自Appel_Offre,其中m.ao=?
嗯,事实上,重读时我希望类转换在线
(列表)会话。createQuery
…我将查询更改为“from Appel\u Offre m where m.nom\u mod=?”,但在列表上循环时我有一个NPE。嗯,实际上,重读时我希望类转换在线
(列表)会话。createQuery
…我将查询更改为“来自Appel_Offre m,其中m.nom_mod=?”但我在列表上循环时有一个NPE。