Hibernate不检索数据

时间:2016-05-10 13:38:07

标签: java hibernate

Iam尝试使用JAXRS / Hibernate构建示例应用程序。

我的数据库中有示例数据,但我无法检索它。请验证我的代码并让我知道我在哪里犯错误。

实体类

package org.cricket.cricketstats.data;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


@Table(name="player_info")
@Entity
public class PlayerInfo {   


@Id
@Column(name="player_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long playerId;

@Column(name="player_name")
private String playerName;

@Column(name="player_role")
private String playerRole;

@Column(name="player_batting_style")
private String playerBattingStyle;

@Column(name="player_bowling_style")
private String playerBowlingStyle;

@Column(name="player_image")
private String playerImage;

@Column(name="player_profile_desc")
private String playerProfile;


public PlayerInfo(){

}

public PlayerInfo(long playerId, String playerName, String playerRole, String playerBattingStyle,
        String playerBowlingStyle, String playerImage, String playerProfile) {
    super();
    this.playerId = playerId;
    this.playerName = playerName;
    this.playerRole = playerRole;
    this.playerBattingStyle = playerBattingStyle;
    this.playerBowlingStyle = playerBowlingStyle;
    this.playerImage = playerImage;
    this.playerProfile = playerProfile;
}


public long getPlayerId() {
    return playerId;
}

public void setPlayerId(long playerId) {
    this.playerId = playerId;
}

public String getPlayerName() {
    return playerName;
}

public void setPlayerName(String playerName) {
    this.playerName = playerName;
}

public String getPlayerRole() {
    return playerRole;
}

public void setPlayerRole(String playerRole) {
    this.playerRole = playerRole;
}

public String getPlayerBattingStyle() {
    return playerBattingStyle;
}

public void setPlayerBattingStyle(String playerBattingStyle) {
    this.playerBattingStyle = playerBattingStyle;
}

public String getPlayerBowlingStyle() {
    return playerBowlingStyle;
}

public void setPlayerBowlingStyle(String playerBowlingStyle) {
    this.playerBowlingStyle = playerBowlingStyle;
}

public String getPlayerImage() {
    return playerImage;
}

public void setPlayerImage(String playerImage) {
    this.playerImage = playerImage;
}

public String getPlayerProfile() {
    return playerProfile;
}

public void setPlayerProfile(String playerProfile) {
    this.playerProfile = playerProfile;
}

}

休息资源

package org.cricket.cricketstats.resources;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.cricket.cricketstats.data.PlayerInfoDAO;
import org.cricket.cricketstats.model.PlayerInfoBean;

@Path("players")
public class CricketResources {

PlayerInfoBean playerInfoBean= new PlayerInfoBean();

 @GET
 @Path("{playerId}")
 @Produces(MediaType.APPLICATION_JSON)
 public PlayerInfoBean getPlayerDetails(@PathParam("playerId") long id) {
     PlayerInfoDAO dao= new PlayerInfoDAO();
     dao.getPlayerInfo();
     playerInfoBean.setPlayerId(id);
     return playerInfoBean;
 }


 }

配置文件

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>

    <!-- Connection settings -->
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/cricket</property>
    <property name="hibernate.connection.username">postgres</property>
    <property name="hibernate.connection.password">postgres</property>

    <!-- SQL dialect -->
    <property     name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>

    <!-- Print executed SQL to stdout -->
    <property name="show_sql">true</property>

    <!-- validate all database on startup -->
    <property name="hibernate.hbm2ddl.auto">validate</property>

    <!-- Annotated entity classes -->
    <mapping class="org.cricket.cricketstats.data.PlayerInfo"/>

</session-factory>
</hibernate-configuration>

DAO课程

package org.cricket.cricketstats.data;
import java.util.List;

import org.cricket.cricketstats.model.PlayerInfoBean;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class PlayerInfoDAO {


public void getPlayerInfo(){
    Configuration config=new Configuration().configure();
    ServiceRegistry serviceRegistry= new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build();
     //StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(config.getProperties());
    // SessionFactory factory = config.buildSessionFactory(builder.build());
     SessionFactory factory = config.buildSessionFactory(serviceRegistry);     
     Session session = factory.openSession();
     Transaction tx =session.beginTransaction();
    List infoList=session.createQuery("FROM PlayerInfo").list();
    tx.commit();
    session.close();
    System.out.println(infoList.get(0).getPlayerName());

}


}

**我试图在查询中提供完整路径**

1 个答案:

答案 0 :(得分:0)

构建会话工厂的方式对于Hibernate 5来说是不正确的。它只能用于Hibernate 4。

改为使用

SessionFactory factory = new Configuration().configure().buildSessionFactory();