简单hibernate 问题,在线求解

syjava 2008-04-21 03:36:22
Session ssession=HibernateUtil.currentSession();
Transaction tx=ssession.beginTransaction();

String sgddHql = " from TCzryxx where sn=1 ";
System.out.println(sgddHql);
Query query = ssession.createQuery(sgddHql);
System.out.println(query.toString());
List uesrsList = query.list();
System.out.println(uesrsList.toString());
ListIterator it = uesrsList.listIterator();
while(it.hasNext()){
TCzryxx yhzd = (TCzryxx)it.next();
System.out.println("name=="+yhzd.toString());
}

/*System.out.println(bean.getSn());*/
usersListForm.setUsersListForm(uesrsList);
request.setAttribute("list",uesrsList);
System.out.println(usersListForm.getSN());
//String id = request.getParameter("id");
//ssession.flush();
tx.commit();
HibernateUtil.closeSession();
///////////////////////////////////////////////////////////////////////
///////////////////
message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:104)


root cause

java.lang.NullPointerException
com.action.UsersListAction.execute(UsersListAction.java:72)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:104)

/////////////////////////////////////////////////////////////////////////////

为什么能返回记录条数,但是单个记录都是null
我有的是自动生成的hibernate映射
...全文
107 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tubage408 2008-04-21
  • 打赏
  • 举报
回复
String sgddHql = " from TCzryxx where sn=1 "; 写的有问题吧,是不是应该这样写呀String sgddHql = " from TCzryxx t where t.id.sn=1 ";

syjava 2008-04-21
  • 打赏
  • 举报
回复
哪该怎么改??
我初学hibernate
Shine_Panda 2008-04-21
  • 打赏
  • 举报
回复
TCzryxx
中的 id 是复合主键
不能直接通过一个单纯的属性 来导航把。
syjava 2008-04-21
  • 打赏
  • 举报
回复

AbstractTCzryxx.java
public abstract class AbstractTCzryxx implements java.io.Serializable {


// Fields

private TCzryxxId id;


// Constructors

/** default constructor */
public AbstractTCzryxx() {
}


/** full constructor */
public AbstractTCzryxx(TCzryxxId id) {
this.id = id;
}


// Property accessors

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

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









}

TCzryxx.java
public class TCzryxx extends AbstractTCzryxx implements java.io.Serializable {

// Constructors

/** default constructor */
public TCzryxx() {
}


/** full constructor */
public TCzryxx(TCzryxxId id) {
super(id);
}

}

TCzryxxId.java
public class TCzryxxId implements java.io.Serializable {


// Fields

private long sn;
private String VYhmc;
private String VYhkl;
private String VYhqx;
private String VYhxm;


// Constructors

/** default constructor */
public TCzryxxId() {
}

/** minimal constructor */
public TCzryxxId(long sn) {
this.sn = sn;
}



// Property accessors

public long getSn() {
return this.sn;
}

public void setSn(long sn) {
this.sn = sn;
}

public String getVYhmc() {
return this.VYhmc;
}

public void setVYhmc(String VYhmc) {
this.VYhmc = VYhmc;
}

public String getVYhkl() {
return this.VYhkl;
}

public void setVYhkl(String VYhkl) {
this.VYhkl = VYhkl;
}

public String getVYhqx() {
return this.VYhqx;
}

public void setVYhqx(String VYhqx) {
this.VYhqx = VYhqx;
}

public String getVYhxm() {
return this.VYhxm;
}

public void setVYhxm(String VYhxm) {
this.VYhxm = VYhxm;
}




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

return (this.getSn()==castOther.getSn())
&& ( (this.getVYhmc()==castOther.getVYhmc()) || ( this.getVYhmc()!=null && castOther.getVYhmc()!=null && this.getVYhmc().equals(castOther.getVYhmc()) ) )
&& ( (this.getVYhkl()==castOther.getVYhkl()) || ( this.getVYhkl()!=null && castOther.getVYhkl()!=null && this.getVYhkl().equals(castOther.getVYhkl()) ) )
&& ( (this.getVYhqx()==castOther.getVYhqx()) || ( this.getVYhqx()!=null && castOther.getVYhqx()!=null && this.getVYhqx().equals(castOther.getVYhqx()) ) )
&& ( (this.getVYhxm()==castOther.getVYhxm()) || ( this.getVYhxm()!=null && castOther.getVYhxm()!=null && this.getVYhxm().equals(castOther.getVYhxm()) ) );
}

public int hashCode() {
int result = 17;

result = 37 * result + (int) this.getSn();
result = 37 * result + ( getVYhmc() == null ? 0 : this.getVYhmc().hashCode() );
result = 37 * result + ( getVYhkl() == null ? 0 : this.getVYhkl().hashCode() );
result = 37 * result + ( getVYhqx() == null ? 0 : this.getVYhqx().hashCode() );
result = 37 * result + ( getVYhxm() == null ? 0 : this.getVYhxm().hashCode() );
return result;
}
}




syjava 2008-04-21
  • 打赏
  • 举报
回复
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="connection.username">sy</property>
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1:1521:server</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="myeclipse.connection.profile">cmdb</property>
<property name="connection.password">0</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<mapping resource="com/Hibernate/TCzryxx.hbm.xml" />

</session-factory>

</hibernate-configuration>
/////////////////////////////////////////////////////////////////////////////////
TCzryxx.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">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="com.Hibernate.TCzryxx" table="T_CZRYXX" schema="SY">
<composite-id name="id" class="com.Hibernate.TCzryxxId">
<key-property name="sn" type="long">
<column name="SN" precision="22" scale="0" />
</key-property>
<key-property name="VYhmc" type="string">
<column name="V_YHMC" length="42" />
</key-property>
<key-property name="VYhkl" type="string">
<column name="V_YHKL" length="42" />
</key-property>
<key-property name="VYhqx" type="string">
<column name="V_YHQX" length="42" />
</key-property>
<key-property name="VYhxm" type="string">
<column name="V_YHXM" length="42" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
Shine_Panda 2008-04-21
  • 打赏
  • 举报
回复
那应该是你的hbm.xml 文件 有问题。
贴出来看下。。
syjava 2008-04-21
  • 打赏
  • 举报
回复
当有三条记录时 :
///////////////////////////////////////
List uesrsList = query.list();
list是[null, null, null]

为什么?
syjava 2008-04-21
  • 打赏
  • 举报
回复
"from TCzryxx where sn=1 "
改成 "from TCzryxx t where t.sn=1 "
试一下看。。。


不行 还是一样。。。
Shine_Panda 2008-04-21
  • 打赏
  • 举报
回复
"from TCzryxx where sn=1 "
改成 "from TCzryxx t where t.sn=1 "
试一下看。。。
syjava 2008-04-21
  • 打赏
  • 举报
回复
控制台打印结果 :
from TCzryxx where sn=1
QueryImpl( from TCzryxx where sn=1 )
[null]
///////////////////////////////////////
List uesrsList = query.list();
list是[null]

为什么?
li_d_s 2008-04-21
  • 打赏
  • 举报
回复
总的让我们看看72行前后吧?记得标注下72行是哪里。。
jayflee 2008-04-21
  • 打赏
  • 举报
回复
"能返回记录条数" 你怎么知道的?
syjava 2008-04-21
  • 打赏
  • 举报
回复
就是不知道什么原因啊,记录条数都能查出来,可就是得不到具体数据
li_d_s 2008-04-21
  • 打赏
  • 举报
回复
UsersListAction.java:72行
这么简单的Exception信息都不会看吗?

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧