1

i have table

CREATE TABLE test_wopk
(
  id integer,
  "name" character(25),
  age integer
)

After Reverse Ingeniring in hibernate i get a classes and mapping file.

TestWopk.java

package gen;

// Generated 16.08.2012 14:08:26 by Hibernate Tools 3.4.0.CR1

/**
 * TestWopk generated by hbm2java
 */
public class TestWopk implements java.io.Serializable
{

private TestWopkId id;

public TestWopk()
{
}

public TestWopk(TestWopkId id)
{
    this.id = id;
}

public TestWopkId getId()
{
    return this.id;
}

public void setId(TestWopkId id)
{
    this.id = id;
}

}

TestWopkId.java

package gen;

// Generated 16.08.2012 14:08:26 by Hibernate Tools 3.4.0.CR1

/**
 * TestWopkId generated by hbm2java
 */
public class TestWopkId implements java.io.Serializable
{

private Integer id;
private String name;
private Integer age;

public TestWopkId()
{
}

public TestWopkId(Integer id, String name, Integer age)
{
    this.id = id;
    this.name = name;
    this.age = age;
}

public Integer getId()
{
    return this.id;
}

public void setId(Integer id)
{
    this.id = id;
}

public String getName()
{
    return this.name;
}

public void setName(String name)
{
    this.name = name;
}

public Integer getAge()
{
    return this.age;
}

public void setAge(Integer age)
{
    this.age = age;
}

public boolean equals(Object other)
{
    if ((this == other))
        return true;
    if ((other == null))
        return false;
    if (!(other instanceof TestWopkId))
        return false;
    TestWopkId castOther = (TestWopkId) other;

    return ((this.getId() == castOther.getId()) || (this.getId() != null && castOther.getId() != null && this.getId()
            .equals(castOther.getId())))
            && ((this.getName() == castOther.getName()) || (this.getName() != null && castOther.getName() != null && this
                    .getName().equals(castOther.getName())))
            && ((this.getAge() == castOther.getAge()) || (this.getAge() != null && castOther.getAge() != null && this
                    .getAge().equals(castOther.getAge())));
}

public int hashCode()
{
    int result = 17;

    result = 37 * result + (getId() == null ? 0 : this.getId().hashCode());
    result = 37 * result + (getName() == null ? 0 : this.getName().hashCode());
    result = 37 * result + (getAge() == null ? 0 : this.getAge().hashCode());
    return result;
}

}

TestWopk.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 16.08.2012 14:08:26 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="gen.TestWopk" table="test_wopk">
    <composite-id name="id" class="gen.TestWopkId">
        <key-property name="id" type="java.lang.Integer">
            <column name="id" />
        </key-property>
        <key-property name="name" type="string">
            <column name="name" length="25" />
        </key-property>
        <key-property name="age" type="java.lang.Integer">
            <column name="age" />
        </key-property>
    </composite-id>
</class>
</hibernate-mapping>

Iwant to get data from db.

    Session session = HibernateUtil.currentSession();

    Transaction tx= session.beginTransaction();
    //чтение из бд
     List list = session.createQuery("from TestWopk").list();
 Iterator itr = list.iterator();
 while(itr.hasNext()){
   TestWopk test = (TestWopk) itr.next();
   System.out.print("EmpName: "+ test.getId());
   System.out.print(" EmpSal: "+ test.getName());
   System.out.print(" EmpSal: "+ test.getAge());
   System.out.println();
 }
    tx.commit();

    HibernateUtil.closeSession();

And get Error

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method getName() is undefined for the type TestWopk
The method getAge() is undefined for the type TestWopk

at net.sf.hibernate.examples.quickstart.hib_main.main(hib_main.java:67)

Tell me please how to work with classes which was generated by hibernate?

Tirtha
  • 351
  • 2
  • 6
  • 22
Kliver Max
  • 5,107
  • 22
  • 95
  • 148

1 Answers1

2

Like the compilation error is telling you, your TestWopk.java class does not have a getName() & getAge() methods. Change your while loop to

        while(itr.hasNext()){    
        TestWopk test = (TestWopk) itr.next();
        System.out.print("EmpName: " + test.getId().getId());
        System.out.print(" EmpSal: " + test.getId().getName());
        System.out.print(" EmpSal: " + test.getId().getAge());
        System.out.println();
    }
gresdiplitude
  • 1,665
  • 1
  • 15
  • 27
  • YOU ARE WIZARD!!! Its works thank you. But can you give me advice better add to tables PRIMARY KEY or use your method? – Kliver Max Aug 16 '12 at 08:56
  • If you have control over the datamodel, i.e. you are allowed change it, it is always adviced not to use composite primary keys. In your case, if ID column will have unique values, why not make it a primary key? If not create a new identity column which will have unique values and use that as a primary key. – gresdiplitude Aug 16 '12 at 09:11