Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Hibernate输出从表(PostgreSQL)检索所有行已损坏_Java_Database_Postgresql_Hibernate - Fatal编程技术网

Java 使用Hibernate输出从表(PostgreSQL)检索所有行已损坏

Java 使用Hibernate输出从表(PostgreSQL)检索所有行已损坏,java,database,postgresql,hibernate,Java,Database,Postgresql,Hibernate,所以我对hibernate还不熟悉,我想创建一个方法来检索表“servers”中的所有内容。有三列:serverId、server\u name和server\u Ip。我可以通过hibernate成功地从表中添加和删除行,但当我尝试获取所有行时,输出看起来好像列表没有强制转换到映射类(ServerEntity)上。我真的被困在这个可能微不足道的问题上了 这是从表服务器检索行的方法 public static List<ServersEntity[]> readDB() {

所以我对hibernate还不熟悉,我想创建一个方法来检索表“servers”中的所有内容。有三列:serverId、server\u name和server\u Ip。我可以通过hibernate成功地从表中添加和删除行,但当我尝试获取所有行时,输出看起来好像列表没有强制转换到映射类(ServerEntity)上。我真的被困在这个可能微不足道的问题上了

这是从表服务器检索行的方法

 public static  List<ServersEntity[]>  readDB() {
     final Session session = getSession();
     session.getSessionFactory().openSession();
     session.beginTransaction();

     String hql = "FROM ServersEntity";
     Query query = session.createQuery(hql);
     List results = query.list();
     session.getTransaction().commit();

     System.out.println(results);
     session.close();
     return results;
}
ServersEntity.class

package org.openjfx;

import org.hibernate.annotations.GenericGenerator;

import javax.persistence.*;
import java.util.Objects;

@Entity
@Table(name = "servers", schema = "public", catalog = "SERVERS")
public class ServersEntity {
    private int serverId;
    private String serverName;
    private String serverIp;

    @Id
    @GenericGenerator(name = "idgen", strategy = "increment")
    @GeneratedValue(generator = "idgen")
    @Column(name = "server_ID", nullable = false)
    public int getServerId() {
        return serverId;
    }

    public void setServerId(int serverId) {
        this.serverId = serverId;
    }

    @Basic
    @Column(name = "server_name", nullable = true, length = -1)
    public String getServerName() {
        return serverName;
    }

    public void setServerName(String serverName) {
        this.serverName = serverName;
    }

    @Basic
    @Column(name = "server_IP", nullable = true, length = -1)
    public String getServerIp() {
        return serverIp;
    }

    public void setServerIp(String serverIp) {
        this.serverIp = serverIp;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ServersEntity that = (ServersEntity) o;
        return serverId == that.serverId &&
                Objects.equals(serverName, that.serverName) &&
                Objects.equals(serverIp, that.serverIp);
    }

    @Override
    public int hashCode() {
        return Objects.hash(serverId, serverName, serverIp);
    }
}

我认为你的代码是好的。您收到了
ServersEntity
的列表。和
System.out.println
打印此列表。问题是
System.out.println
不知道如何打印
ServersEntity
和打印对象的类名和id。尝试在ServersEntity类中添加
toString
方法:

  @Override
  public String toString() {
    return serverName + ": " + serverIp;
  }
然后运行你的代码


当您尝试
从ServerEntity
中选择server\u name时,请选择您的接收字符串列表。和
System.out.println
知道如何打印它。

列表中的所有对象都是ServerSenty的实例。那么具体的问题是什么呢?你在做什么,你预计会发生什么,确切地说会发生什么?好吧,我想问题在于你的回报类型。该列表是ServersEntity的列表。它不是ServersEntity数组的列表。我不明白你为什么想要一个ServerSenty数组的列表。因此,将返回类型改为List,而不是List。我真的很笨,我现在不知道如何获取我放置的对象而不是它们的实例。数据库不是空的,比如初始化我的类的数组?好的,当我添加“从ServerEntity选择服务器名称”时,它按预期工作,但当我添加服务器Ip时,它显示实例SOMG就是这么简单。非常感谢:3
  @Override
  public String toString() {
    return serverName + ": " + serverIp;
  }