select new Article(articleClass,uuid,title,createDate,readerNum,criticismNum,poll) from Articlepackage net.ynyee.school.orm.bean;import java.io.Serializable;
import java.util.Date;public class Article implements Serializable { private static final long serialVersionUID = 1L; public Article() {
// TODO Auto-generated constructor stub
} public Article(String uuid, String title, Date createDate,
ArticleClass articleClass) {
super();
this.uuid = uuid;
this.title = title;
this.createDate = createDate;
this.articleClass = articleClass;
} public Article(ArticleClass articleClass, String uuid, String title,
Date createDate, long readerNum, long criticismNum, int poll) {
super();
this.uuid = uuid;
this.title = title;
this.createDate = createDate;
this.articleClass = articleClass;
this.readerNum = readerNum;
this.criticismNum = criticismNum;
this.poll = poll;
} /** 文章编号 */
private String uuid = null;
/** 文章标题 */
private String title = null;
/** 文章正文 */
private String content = null;
/** 发表时间 */
private Date createDate = null;
/** 最后修改时间 */
private Date lastModifyDateTime = null;
/** 作者 */
private User author = null;
/** 作者名称 */
private String authorName = null;
/** 所属文章分类 */
private ArticleClass articleClass = null;
/** 文章浏览量 */
private long readerNum = 0;
/** 评论数量 */
private long criticismNum = 0;
/** 草稿 */
private int draft = 0;
/** 标签 */
private String tags = null;
/** 投票 */
private int poll = 0;
/** 投票时长 */
private int pollLifeDay = 0;
/** 投票多选开关 */
private int pollMultiple = 0;
/** 赞成 */
private long agree = 0;
/** 反对 */
private long denial = 0; public Date getCreateDate() {
return createDate;
} public void setCreateDate(Date createDate) {
this.createDate = createDate;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} public ArticleClass getArticleClass() {
return articleClass;
} public void setArticleClass(ArticleClass articleClass) {
this.articleClass = articleClass;
} public void setAuthorName(String authorName) {
this.authorName = authorName;
} public String getAuthorName() {
return authorName;
} public long getAgree() {
return agree;
} public void setAgree(long agree) {
this.agree = agree;
} public long getDenial() {
return denial;
} public void setDenial(long denial) {
this.denial = denial;
} public long getCriticismNum() {
return criticismNum;
} public void setCriticismNum(long criticismNum) {
this.criticismNum = criticismNum;
} public String getTags() {
return tags;
} public void setTags(String tags) {
this.tags = tags;
} public String getUuid() {
return uuid;
} public void setUuid(String uuid) {
this.uuid = uuid;
} public Date getLastModifyDateTime() {
return lastModifyDateTime;
} public void setLastModifyDateTime(Date lastModifyDateTime) {
this.lastModifyDateTime = lastModifyDateTime;
} public long getReaderNum() {
return readerNum;
} public void setReaderNum(long readerNum) {
this.readerNum = readerNum;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public int getPollLifeDay() {
return pollLifeDay;
} public void setPollLifeDay(int pollLifeDay) {
this.pollLifeDay = pollLifeDay;
} public int getDraft() {
return draft;
} public void setDraft(int draft) {
this.draft = draft;
} public int getPoll() {
return poll;
} public void setPoll(int poll) {
this.poll = poll;
} public int getPollMultiple() {
return pollMultiple;
} public void setPollMultiple(int pollMultiple) {
this.pollMultiple = pollMultiple;
} public User getAuthor() {
return author;
} public void setAuthor(User author) {
this.author = author;
}
}package net.ynyee.school.orm.bean;import java.io.Serializable;
import java.util.List;public class ArticleClass implements Serializable { private static final long serialVersionUID = 1L; /** 文章类别编号 */
private int classId = 0;
/** 父级分类 */
private ArticleClass parent = null;
/** 这个类别的子分类 */
private List<ArticleClass> childrens = null;
/** 文章类别名称 */
private String className = null;
/** 此分类下的文章数量 */
private long articleNum = 0;
/** 子分类数量 */
private int childNum = 0; public int getChildNum() {
return childNum;
} public void setChildNum(int childNum) {
this.childNum = childNum;
} public void setChildrens(List<ArticleClass> childrens) {
this.childrens = childrens;
} public List<ArticleClass> getChildrens() {
return childrens;
} public long getArticleNum() {
return articleNum;
} public void setArticleNum(long articleNum) {
this.articleNum = articleNum;
} public int getClassId() {
return classId;
} public void setClassId(int classId) {
this.classId = classId;
} public ArticleClass getParent() {
return parent;
} public void setParent(ArticleClass parent) {
this.parent = parent;
} public String getClassName() {
return className;
} public void setClassName(String className) {
this.className = className;
}
}因为不需要把Article的全部字段都查询出来,所以没有用from Article ,但是这样写不行啊。
错误:
java.lang.NullPointerException
at org.hibernate.util.ReflectHelper.getConstructor(ReflectHelper.java:172)好像是说我没有写构造,但是我已经写了啊。求救。已经修改来修改去修改了5个小时了。
如果去掉articleClass,就可以查询了,加上就出这个错误。

解决方案 »

  1.   

    private ArticleClass articleClass = new ArticleClass();
    行不
      

  2.   


    去了,试了,依然一样的错误警告: Unhandled exception
    java.lang.NullPointerException
    at org.hibernate.util.ReflectHelper.getConstructor(ReflectHelper.java:172)
    at org.hibernate.hql.ast.tree.ConstructorNode.resolveConstructor(ConstructorNode.java:114)
    at org.hibernate.hql.ast.tree.ConstructorNode.prepare(ConstructorNode.java:88)
    at org.hibernate.hql.ast.HqlSqlWalker.processConstructor(HqlSqlWalker.java:847)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:1956)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:1825)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1394)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:553)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
    at net.ynyee.school.dao.impl.ArticleDaoImpl.getLastPostArticles(ArticleDaoImpl.java:68)
      

  3.   

    还有点疑问
    为什么你要把初始值置null?
      

  4.   

    at net.ynyee.school.dao.impl.ArticleDaoImpl.getLastPostArticles(ArticleDaoImpl.java:68)
    找这句话去
      

  5.   


    和这个没关系,不设置成null,浪费
      

  6.   


    public List<Article> getLastPostArticles(int length)
    throws QueryArticleException, HibernateException {
    Session session = null;
    List<Article> articleList = null;
    session = this.getSessionFactory().getCurrentSession();
    // Query q = session
    // .createQuery(
    // " select new Article(uuid,title,createDate,articleClass,readerNum,criticismNum,poll)  from Article a where a.draft=:draft order by a.createDate desc")
    // .setInteger("draft", 0).setFirstResult(0).setMaxResults(length);
    Query q = session   //这里是68行
    .createQuery(
    " select new Article(articleClass,uuid,title,createDate,readerNum,criticismNum,poll) from Article  ");
    //.setInteger("draft", 0).setFirstResult(0).setMaxResults(length);
    articleList = q.list();
    //where a.draft=:draft order by a.createDate desc
    return articleList;
    }
      

  7.   

    没有任何问题public static void main(String[] args) {
    System.out.println(new Article(null,null,null,null,0L,0L,0));
    }Console:net.ynyee.school.orm.bean.Article@c17164
      

  8.   

    自己断点找吧
    看看那个68行附近有没有null
      

  9.   

    断点没用过,但是我的这是查询啊。.list()已经执行了,要错也是HQL写错了,不过好像没错啊,。。那怎么回事
    <many-to-one name="articleClass" column="class_id" />
      

  10.   


    同意,跟踪下看看到底谁是null ,
      

  11.   

    偶没见过select new object () from object 的Hql,可能是偶经验不足吧
      

  12.   

    " select new Article(articleClass,uuid,title,createDate,readerNum,criticismNum,poll) from Article  ");
    这里面的new Article里面的参数是哪里来的?
      

  13.   

    这个问题不解决我就把我的项目从struts 和 hibernate里拿出来,全部用SERVLET 和JDBC
      

  14.   

    select new Article(articleClass,uuid,title,createDate,readerNum,criticismNum,poll) from Article  可以吗?
      

  15.   


    不行,hiberante说是反射找不到我的构造。
      

  16.   

    select new Article(a.articleClass,a.uuid,a.title,a.createDate,a.readerNum,a.criticismNum,a.poll) from Article as a
    试试这个
      

  17.   

    Article 和ArticleClass 配置的是一对多的关系吗?
      

  18.   

    诶,BUG,结贴了还可以回复·1!~!
      

  19.   

    select new net.ynyee.school.orm.bean.Article(articleClass,uuid,title,createDate,readerNum,criticismNum,poll) from Article 
    把包名加上!
      

  20.   

    public TUser(Integer userId,TOrganization TOrganization, String userName,Integer gender,
    String duty, String phone, String address,Date createdDate,
    String re) {
    this.userId = userId;
    this.TOrganization = TOrganization;
    this.userName = userName;
    this.gender = gender;
    this.duty = duty;
    this.phone = phone;
    this.address = address;
    this.createdDate = createdDate;
    this.re = re; } String selectHql = "select new TUser(user.userId,user.TOrganization,user.userName,user.gender,user.duty, user.phone,user.address,user.createdDate,user.re) from TUser as user ";-----------------------------------------
    类型一定要看看!!最好是父类。
    其次是泛型应用。