Hibernate选择字符串而不是对象

时间:2015-08-06 17:28:18

标签: java mysql hibernate

我是Hibernate世界的新手,我遇到了一个我无法解决的问题。请你好。

我有什么:

  • Netbeans IDE 8.0.2
  • 带有一些表的Mysql数据库(easyPHP)

我想要的是什么:

  • 选择包含 id 名称描述的3条记录的类别(表格)并显示它们(名称 description

我的分类:

public class Category  implements java.io.Serializable {


     private Integer id;
     private String name;
     private String description;

    public Category() {
    }

    public Category(String name, String description) {
        this.name = name;
        this.description = description;
    }
    public Category(String name, String description) {
       this.name = name;
       this.description = description;
    }

    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 String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

我的getCategories方法:

            public static List getAllCategories(){
               Session session = HibernateUtil.getSessionFactory().getCurrentSession();
               Transaction tx = session.beginTransaction();
               List results = session.createCriteria(Category.class, "category")
               .list();
               tx.commit();
               return results; 
            }

我的控制器:

                    List categories = CategoriesManagement.getAllCategories();
                    map.addAttribute("categories", categories);

我的观点(jsp):

<c:forEach var="cat" items="${categories} ">
   ${cat.name}
</c:forEach>

我一无所获。

当我显示 $ {cat.class} 时,它会说:

java.lang.String
java.lang.String
java.lang.String

当我显示 $ {cat} 时,它会说:

com.company.Category@7136faa
com.company.Category@25636faa
com.company.Category@83baeaa

更新:

当我在类别中重新定义toString()方法时:

public toString(){
   return "foo";
}

我明白了:

[foo
foo
foo]

提前致谢。

2 个答案:

答案 0 :(得分:0)

使用此:<c:out value="${cat.name}" />

答案 1 :(得分:0)

我知道这很奇怪,经过9个小时(我发誓)我发现了这个空间 <c:forEach var="cat" items="${categories} ">是错误, 我应该这样做: <c:forEach var="cat" items="${categories}">