Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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

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_Criteria_Hibernate Criteria_Query By Example - Fatal编程技术网

Java 在条件中添加多个示例(Hibernate)

Java 在条件中添加多个示例(Hibernate),java,hibernate,criteria,hibernate-criteria,query-by-example,Java,Hibernate,Criteria,Hibernate Criteria,Query By Example,SchoolViewModel.java public class SchoolViewModel { private String state; private String city; private String instituteType; //getter and setter } InstituteType.java @Entity @Table(name="REF_INSTITUTE_TYPE") public class InstituteTy

SchoolViewModel.java

public class SchoolViewModel {
    private String state;
    private String city;
    private String instituteType;

    //getter and setter
}
InstituteType.java

@Entity
@Table(name="REF_INSTITUTE_TYPE")
public class InstituteType implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name="ID")
    private Integer id;

    @Column(name="INSTITUTE_TYPE")
    private String instituteType;

    public Integer getId() {
        return id;
    }

    @ManyToMany(mappedBy="instituteType")
    private Set<SchoolDetail> schoolDetail =new HashSet<SchoolDetail>();

    //getter and setter 
}
@实体
@表(name=“REF\u INSTITUTE\u TYPE”)
公共类InstituteType实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@列(name=“ID”)
私有整数id;
@列(name=“机构类型”)
私人字符串机构;
公共整数getId(){
返回id;
}
@ManyToMany(mappedBy=“instituteType”)
private Set schoolDetail=new HashSet();
//接二连三
}
Board.java

@Entity
@Table(name="REF_BOARD")
public class Board implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name="ID")
    private Integer id;

    @Column(name="BAORD")
    private String board;

    @ManyToMany(mappedBy="board")
    private Set<SchoolDetail> schoolDetail =new HashSet<SchoolDetail>();

    //getter and setter
}
@实体
@表(name=“参考板”)
公共类板实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@列(name=“ID”)
私有整数id;
@列(name=“BAORD”)
私人弦板;
@许多(mappedBy=“board”)
private Set schoolDetail=new HashSet();
//接二连三
}
SchoolDetail.java

@Entity
@Table(name="SCHOOL_DETAIL")
public class SchoolDetail implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name="id")
    private int id;
    @Column(name="name")
    private String name;

    @Column(name="state")
    private String state;
    @Column(name="city")
    private String city;


    @ManyToMany
    @JoinTable(name="SCHOOL_INSTITUTE_TYPE",
               joinColumns={@JoinColumn(name="SCHOOL_ID")},
               inverseJoinColumns={@JoinColumn(name="INSTITUTE_TYPE_ID")}
              )
    private Set<InstituteType> instituteType=new HashSet<InstituteType>();

    @ManyToMany
    @JoinTable(name="SCHOOL_BOARD",
               joinColumns={@JoinColumn(name="SCHOOL_ID")},
               inverseJoinColumns={@JoinColumn(name="BOARD_ID")}
            )
    private Set<Board> board=new HashSet<Board>();

//getter and setter
}
@实体
@表(name=“学校详细信息”)
公共类SchoolDetail实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@列(name=“id”)
私有int-id;
@列(name=“name”)
私有字符串名称;
@列(name=“state”)
私有字符串状态;
@列(name=“city”)
私人城市;
@许多
@JoinTable(name=“SCHOOL\u INSTITUTE\u TYPE”,
joinColumns={@JoinColumn(name=“SCHOOL_ID”)},
inverseJoinColumns={@JoinColumn(name=“INSTITUTE\u TYPE\u ID”)}
)
private Set instituteType=new HashSet();
@许多
@JoinTable(name=“学校董事会”,
joinColumns={@JoinColumn(name=“SCHOOL_ID”)},
inverseJoinColumns={@JoinColumn(name=“BOARD_ID”)}
)
私有集板=新HashSet();
//接二连三
}
Main.java

public class SchoolBoard {
    public static void main(String[] args) {
        Configuration cfg=new Configuration();
        cfg.configure("hibernate.cfg.xml");
        SessionFactory sessionFactory=cfg.buildSessionFactory();
        Session session=sessionFactory.openSession();

        try{
            SchoolViewModel svm=new SchoolViewModel();
            svm.setState("Maharastra");
            svm.setCity("Pune");
            svm.setInstituteType("college");

            SchoolDetail school=new SchoolDetail();
            school.setState(svm.getState());
            school.setCity(svm.getCity());
            InstituteType instituteType=new InstituteType();
            instituteType.setInstituteType(svm.getInstituteType()); 
            Board board=new Board();
            board.setBoard("STATE");
            Example schoolExample=Example.create(school).ignoreCase().enableLike().excludeZeroes();
            Example instituteTypeExample=Example.create(instituteType).ignoreCase().enableLike().excludeZeroes();
            Example boardExample=Example.create(board).ignoreCase().enableLike().excludeZeroes();
            Criteria criteria=session.createCriteria(SchoolDetail.class,"schoolDetail");
            criteria.createAlias("schoolDetail.instituteType", "instituteType");
            criteria.createAlias("schoolDetail.board", "board");
            criteria.add(schoolExample);
            criteria.add(instituteTypeExample);
            criteria.add(boardExample);

Line - 48   List<SchoolDetail> schoolList=criteria.list();

        }finally{
            session.close();
            sessionFactory.close();
            }
    }
}
公共班级黑板{
公共静态void main(字符串[]args){
Configuration cfg=新配置();
configure(“hibernate.cfg.xml”);
SessionFactory SessionFactory=cfg.buildSessionFactory();
Session Session=sessionFactory.openSession();
试一试{
SchoolViewModel svm=新的SchoolViewModel();
svm.setState(“马哈拉施特拉”);
svm.setCity(“普纳”);
svm.setInstituteType(“学院”);
SchoolDetail school=新SchoolDetail();
school.setState(svm.getState());
school.setCity(svm.getCity());
InstituteType InstituteType=新InstituteType();
setInstituteType(svm.getInstituteType());
线路板=新线路板();
董事会(“州”);
Example schoolExample=Example.create(school.ignoreCase().enableLike().excludeZeroes();
Example instituteTypeExample=Example.create(instituteType.ignoreCase().enableLike().excludeZeroes();
Example boardExample=Example.create(board.ignoreCase().enableLike().excludeZeroes();
标准=session.createCriteria(SchoolDetail.class,“SchoolDetail”);
criteria.createAlias(“schoolDetail.instituteType”、“instituteType”);
标准.createAlias(“schoolDetail.board”、“board”);
标准。添加(学校示例);
标准。添加(InstitutePee示例);
标准。添加(示例);
第48行List schoolList=criteria.List();
}最后{
session.close();
sessionFactory.close();
}
}
}
例外情况是:

Exception in thread "main" org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.util.Set<com.mypack.model.Board> com.mypack.model.SchoolDetail.board] by reflection for persistent property [com.mypack.model.SchoolDetail#board] : com.mypack.model.InstituteType@f555e7
    at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:71)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValues(AbstractEntityTuplizer.java:506)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValues(PojoEntityTuplizer.java:215)
    at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValues(AbstractEntityPersister.java:4626)
    at org.hibernate.criterion.Example.toSqlString(Example.java:190)
    at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:400)
    at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:106)
    at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:75)
    at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:80)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1849)
    at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:365)
    at com.mypack.dao.SchoolBoard.main(SchoolBoard.java:48)
Caused by: java.lang.IllegalArgumentException: Can not set java.util.Set field com.mypack.model.SchoolDetail.board to com.mypack.model.InstituteType
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
    at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
    at java.lang.reflect.Field.get(Field.java:387)
    at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:67)
    ... 11 more
线程“main”org.hibernate.property.access.spi.PropertyAccessException中的异常:通过永久属性[com.mypack.model.SchoolDetail#board]:com.mypack.model的反射访问字段[private java.util.Set com.mypack.model.SchoolDetail.board]时出错。InstituteType@f555e7
位于org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:71)
位于org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValues(AbstractEntityTuplizer.java:506)
位于org.hibernate.tuple.entity.PojoEntityTuplizer.getPropertyValues(PojoEntityTuplizer.java:215)
位于org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValues(AbstractEntityPersister.java:4626)
位于org.hibernate.criteria.Example.toSqlString(Example.java:190)
位于org.hibernate.loader.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:400)
位于org.hibernate.loader.criteria.CriteriaJoinWalker(CriteriaJoinWalker.java:106)
位于org.hibernate.loader.criteria.CriteriaJoinWalker(CriteriaJoinWalker.java:75)
位于org.hibernate.loader.criteria.CriteriaLoader.(CriteriaLoader.java:80)
位于org.hibernate.internal.SessionImpl.list(SessionImpl.java:1849)
位于org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:365)
位于com.mypack.dao.SchoolBoard.main(SchoolBoard.java:48)
原因:java.lang.IllegalArgumentException:无法将java.util.set字段com.mypack.model.SchoolDetail.board设置为com.mypack.model.InstituteType
在sun.reflect.UnsafeFieldAccessorImpl.throwsetilegalargumentexception(UnsafeFieldAccessorImpl.java:167)处
在sun.reflect.UnsafeFieldAccessorImpl.throwsetilegalargumentexception(UnsafeFieldAccessorImpl.java:171)中
在sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
位于sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
位于java.lang.reflect.Field.get(Field.java:387)
位于org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:67)
... 还有11个
说明:SchoolViewModel是pojo类,它将从前端传输数据。该屏幕是搜索屏幕,包含优化您的搜索,就像任何电子商务网站一样,您可以在其中过滤或缩小搜索范围。根据用户选择,数据库将从数据库中检索数据。为此,我在hibernate中通过示例实现了查询。但是,尽管标准中有多个示例,但它抛出了异常