本文介绍了如何在Hibernate中使用没有PRIMARY KEY的表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有表格
CREATE TABLE test_wopk
(
id integer,
"name" character(25),
age integer
)
在hibernate中我得到一个类和映射文件。
After Reverse Ingeniring in hibernate i get a classes and mapping file.
TestWopk.java
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
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
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>
我想从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();
并获得错误
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)
请告诉我如何处理由hibernate生成的类。
Tell me please how to work with classes which was generated by hibernate?
推荐答案
编译错误告诉你,你的TestWopk.java类没有getName()& getAge()方法。将你的while循环改为
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();
}
这篇关于如何在Hibernate中使用没有PRIMARY KEY的表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!