Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Could not find a getter


Автор: Matritsa 22.9.2010, 22:47
доброго времени суток.
пытаюсь использовать hibernate - создаю классы, xml - но при компиляции возникает ошибки вида

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Initial SessionFactory creation failed.org.hibernate.PropertyNotFoundException: Could not find a getter for studgroups in class test4.Group
Exception in thread "main" java.lang.ExceptionInInitializerError
        at util.HibernateUtil.<clinit>(HibernateUtil.java:21)
        at test4.Main.main(Main.java:116)
Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for studgroups in class test4.Group
        at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:282)
        at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:275)
        at org.hibernate.mapping.Property.getGetter(Property.java:272)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:247)
        at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:125)
        at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
        at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
        at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:302)
        at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
        at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
        at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
        at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1300)
        at util.HibernateUtil.<clinit>(HibernateUtil.java:18)
        ... 1 more
Java Result: 1
есть сущности
•    Студент
◦    Имя
◦    Фамилия
◦    Отчество
◦    Дата рождения
◦    Группа
•    Группа
◦    Номер
◦    Название факультета
создаю классы для них:
Код


public class Student {
  private Long id;
  private String firstname;
  private String lastname;
  private String otch;
  private Date dateofbirth;
  private Long groupid;
  
 // private Set groups = new HashSet();
  public Student(){}
  public void setId(Long id) {
    this.id = id;
  }
   public void setFirstname(String firstname) {
    this.firstname = firstname;
  }
   public void setLastname(String lastName) {
    this.lastname = lastname;
  }
   public void setOtch(String otch) {
    this.otch = otch;
  }
   public void setDateofbirth(Date dateofbirth) {
    this.dateofbirth = dateofbirth;
  }
 /*  public void setgroupid(Long groupid) {
    this.groupid = groupid;
  }*/
/*  public void setgroups(Set groups) {
    this.groups = groups;
  }*/
   public Long getId() {
    return id;
  }
   public String getFirstname() {
    return firstname;
  }
   public String getLastname() {
    return lastname;
  }
   public String getOtch() {
    return otch;
  }
   public  Date getDateofbirth() {
    return dateofbirth;
  }
   public Long getGroupid() {
    return groupid;
  }
  /* public Set getGroups() {
    return groups;
  }*/
}



Код

public class Group {
    private Long groupid;
    private String faculty;
   // private Set students = new HashSet();
    public Group(){}
  public void setGroupid(Long groupid) {
        this.groupid=groupid;
    }
   public Long getGroupid() {
    return groupid;
  }
   public void setFaculty(String faculty) {
    this.faculty = faculty;
  }
  /* public void setstudents(Set students) {
    this.students = students;
  }*/
   
   public String getFaculty() {
    return faculty;
  }
  /* public Set getstudents() {
    return students;
  }*/

      

}


xmls:
Stud.hbm.xml
Код

<hibernate-mapping>
<class name="test4.Student" table="students">
    <id column="id" name="id" type="java.lang.Long">
      <generator class="increment"/>
    </id>
    <property column="FirstName" name="firstName" type="java.lang.String"/>
    <property column="LastName" name="lastName" type="java.lang.String"/>
    <property column="Otch" name="otch" type="java.lang.String"/>
    <property column="DateofBirth" name="dateofBirth" type="java.util.Date"/>
    <many-to-one name="group" column="groupid" class="test4.Group"/>
    
  </class>
</hibernate-mapping>


Studgroups.hmb.xml
Код

<hibernate-mapping>
<class name="test4.Group" table="studgroups">
    <id column="groupid" name="groupid" type="java.lang.Long">
      <generator class="increment"/>
    </id>
    <property column="faculty" name="faculty" type="java.lang.String"/>
    
    <set name="studgroups" table="studgroups" lazy="false">
      <key column="id"/>
      <one-to-many class="test4.Student"/>
    </set>

  </class>
</hibernate-mapping>

и конфигурационная xml
Код

<hibernate-configuration>
<session-factory>
    <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.username">root</property>
    <property name="connection.password"></property>
    <property name="connection.pool_size">1</property>
    <property name="current_session_context_class">thread</property>
    <property name="show_sql">true</property>
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

    <mapping resource="test4/stud.hbm.xml"/>
    <mapping resource="test4/studgroups.hbm.xml"/>
    
  </session-factory>
</hibernate-configuration>



очень надеюсь на вашу помощь. по какой причине возникает эксепшн?

Автор: kkorsakoff 22.9.2010, 23:04
Код

<set name="studgroups" table="studgroups" lazy="false">
      <key column="id"/>
      <one-to-many class="test4.Student"/>
    </set>


А где собственно метод Set getStudgroups() в классе test4.Group? Сет в маппинге объявили, а в классе поле с геттером и сеттером не определили.
Ошибка в данном случае достаточно говорящая.

Автор: Matritsa 22.9.2010, 23:27
спасибо большое) исправлено.
но теперь возникла другая.
пытаюсь извлечь данные из базы, прописан в методе Main следующий код:
Код

 Collection groups = Factory.getInstance().getgroupdao().getAllGroups();
    Iterator iterator = groups.iterator();
    while (iterator.hasNext()) {
      Group grp = (Group) iterator.next();
      System.out.println("группа : " + grp.getGroupid());
      Collection students = Factory.getInstance().getstuddao().getStudentsByGroup(grp);
      Iterator iterator2 = students.iterator();
      while (iterator2.hasNext()) {
        Student std = (Student) iterator2.next();
        System.out.println("студент " + std.getLastname());

      }
    }

при этом возникает ошибка
IllegalArgumentException occured while calling setter of test4.Group.groupid
в консоле:
Hibernate: select this_.groupid as groupid1_0_, this_.faculty as faculty1_0_ from studgroups this_

заранее благодарю за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)