当前位置: 首页 > 知识库问答 >
问题:

程序未显示所需的对象字符串表示形式

令狐宏浚
2023-03-14

我用java编写了一个程序,可以将所有订单返回给提供商。它不显示订单的id,而是显示sakila。实体Order@883357,其中sakila。实体是包含订单的包。java和Order。hbm。xml。我认为问题出在displayResult()方法中。也许有人能找到答案。谢谢!

以下是程序:

package sakila.ui;

import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import sakila.entity.Comanda;
import sakila.entity.Furnizor;
import sakila.util.HibernateUtil;


public class SearchOrders extends javax.swing.JFrame {

public SearchOrders() {
    initComponents();
}


private void queryButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                             
    //if (!idProviderTextField.getText().trim().equals(""))
            runQueryBasedOnIdFurnizor();
}                                            

private void runQueryBasedOnIdProvider(){
    executeHQLQuery("from Provider c where c.idprovider like '" +  idProvider.getText() + "%'" );

}

 private void executeHQLQuery(String hql){
    try{
    Session session = HibernateUtil.getSessionFactory().openSession();
    session.beginTransaction();
    org.hibernate.Query q = session.createQuery(hql);
    List resultList = q.list();
    displayResult(resultList);
    session.getTransaction().commit();
    }catch (HibernateException he){
        he.printStackTrace();
    }
}

  private void displayResult(List resultList){
    Vector<String> tableHeaders = new Vector<String>();
    Vector tableData = new Vector();
    tableHeaders.add("IdOrder");

    for (Object o : resultList){
        Provider p = (Provider) o;

        Set<Order> c = p.getOrder();
        Iterator it = c.iterator();
        while (it.hasNext()) {
            Object element = it.next();
            System.out.println(element);
            Vector <Object> oneRow = new Vector <Object>();
            oneRow.add(element);

        tableData.add(oneRow);
        }
    }
   resultTable1.setModel(new DefaultTableModel(tableData, tableHeaders)); 
}


public static void main(String args[]) {
        public void run() {
            new SearchOrders().setVisible(true);
        }
    });
}
// Variables declaration - do not modify                     
private javax.swing.JTextField idProviderTextField;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton queryButton1;
private javax.swing.JTable resultTable1;
// End of variables declaration                   

}

这是上课顺序。Java语言

package sakila.entity;

//由Hibernate Tools 3.2.1于2012年4月9日晚上10:19:40生成。乔治亚州

导入java。util。哈希集;导入java。util。设置

Public class order实现java.io.Serializable{

 private int idorder;
 private Client client;
 private Depozit warehouse;
 private Furnizor provider;
 private Integer idproduct;
 private Integer unitmas;
 private Integer quantity;
 private Set comdetals = new HashSet(0);
 private Set facturas = new HashSet(0);

public Order() {
}


public Order(int idorder) {
    this.idorder = idorder;
}
public Order(int idorder, Client client, Warehouse warehouse, Provider provider, Integer idproduct, Integer unitmas, Integer quantity, Set comdetals, Set facturas) {
   this.idorder = idorder;
   this.client = client;
   this.warehouse = warehouse;
   this.provider = provider;
   this.idproduct = idproduct;
   this.unitmas = unitmas;
   this.quantity = quantity;
   this.comdetals = comdetals;
   this.facturas = facturas;
}

public int getIdorder() {
    return this.idorder;
}

public void setIdorder(int idorder) {
    this.idorder = idorder;
}
public Client getClient() {
    return this.client;
}

public void setClient(Client client) {
    this.client = client;
}
public Warehouse getWarehouse() {
    return this.warehouse;
}

public void setWarehouse(Warehouse warehouse) {
    this.warehouse = warehouse;
}
public Provider getProvider() {
    return this.provider;
}

public void setProvider(Provider provider) {
    this.provider = provider;
}
public Integer getIdproduct() {
    return this.idproduct;
}

public void setIdproduct(Integer idproduct) {
    this.idproduct = idproduct;
}
public Integer getUnitmas() {
    return this.unitmas;
}

public void setUnitmas(Integer unitmas) {
    this.unitmas = unitmas;
}
public Integer getQuantity() {
    return this.quantity;
}

public void setQuantity(Integer quantity){
    this.quantity = quantity;
}
public Set getComdetals() {
    return this.comdetals;
}

public void setComdetals(Set comdetals) {
    this.comdetals = comdetals;
}
public Set getFacturas() {
    return this.facturas;
}

public void setFacturas(Set facturas) {
    this.facturas = facturas;
}

}

共有1个答案

单嘉泽
2023-03-14

现在是系统。出来println(元素) 行只使用默认的toString()方法,该方法打印出对象的一些内部代码。

您的订单类需要重写toString()方法,以便打印订单的id。

或者最好将迭代器代码更改为:

Iterator<Order> it = c.iterator();
while (it.hasNext()) {
    Order element = it.next();
    System.out.println(element.getIdorder());

这样,您就不必只为这一种情况编写一个toString()方法。通常,当您重写toString()时,您希望它打印出完整对象的文本表示:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html#toString()

 类似资料:
  • 我有代码在这里生成一个随机的名字给定音节点击一个动作按钮。但作为字符串currentName生成的名称会显示在TextView中。我需要使视图成为它自己的类吗?我是androidstudio的新手,来自eclipse,所以textviews对我来说也是新手。多谢了。 } 这也是我的activity_main.xml

  • 问题 你想改变对象实例的打印或显示输出,让它们更具可读性。 解决方案 要改变一个实例的字符串表示,可重新定义它的 __str__() 和 __repr__() 方法。例如: class Pair: def __init__(self, x, y): self.x = x self.y = y def __repr__(self):

  • 本文向大家介绍JavaScript 数字的字符串表示形式,包括了JavaScript 数字的字符串表示形式的使用技巧和注意事项,需要的朋友参考一下 示例 JavaScript具有从Number到String表示形式的本地转换,从2到36的任何基数。 十进制(以10为底)之后最常见的表示形式是十六进制(以16为底),但本节的内容适用于范围内的所有底。 为了将数字从十进制(以10为底)转换为十六进制(

  • 我刚启动JavaFx,有点拘泥于TableView,它显示了每个列的非常长的字符串表示,如: 而我预计细胞中只会出现“大”、“5000”、“3000”。 这是我的模型: fxml: 最后是控制器: 看起来控制器很好,它能够从数据库中获取值并向TableView添加行,但为什么TableView显示属性对象的字符串表示,而不仅仅是显示值? 非常感谢!

  • 问题内容: 我有一个C python扩展名,我想打印一些诊断信息。 我收到一个字符串作为PyObject *。 获取此对象的字符串表示形式(使其可用作const char *)的规范方法是什么? 更新: 澄清以强调访问为const char *。 问题答案: 使用(模仿Python的函数)或(模仿),然后调用get (您可以并且通常应该将其用作,例如: 任何人都可以使用此方法。如果您完全确定是Py

  • 问题内容: 考虑此类: 默认的字符串表示形式如下所示: 如何使它显示自定义字符串? 问题答案: 在类的元类中实现或。 使用,如果你说的是可读的字串,使用了明确的表示。