2017-08-12 61 views
0
// This is my pojo class 

package com.kittu.hibernate; 

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

@Entity 
public class User { 
    @Id 
    @GeneratedValue 
    private int Rollno; 
    private String Name; 

    public int getRollno() { 
     return Rollno; 
    } 

    public void setRollno(int Rollno) { 
     this.Rollno = Rollno; 
    } 

    public String getName() { 
     return Name; 
    } 

    public void setName(String Name) { 
     this.Name = Name; 
    }  
} 

//**Main class** 

package com.kittu.hibernate; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.hibernate.cfg.Configuration; 

public class Main { 
    public static void main (String args[]) 
    { 
     User u1=new User(); 
     u1.setName("gontu"); 

     Configuration cfg = new Configuration(); 
     cfg = cfg.configure("hibernate.cfg.xml"); 
     SessionFactory sessionFactory = cfg.buildSessionFactory(); 
     Session session=sessionFactory.openSession(); 
     session.beginTransaction(); 

     u1 = (User)session.get(User.class,1); 

     System.out.println("student object having name as" +u1.getName()); 

     session.getTransaction().commit(); 
     session.close(); 
     sessionFactory.close(); 
    } 
} 

// 我在MySQL数据库中创建的数据库名用户为什么我在我的hibernate get方法中出现空指针异常?

错误

run: 
Aug 12, 2017 10:42:18 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.1.0.Final} 
Aug 12, 2017 10:42:18 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Aug 12, 2017 10:42:18 AM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Aug 12, 2017 10:42:18 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver 

resolveEntity 警告:HHH90000012:公认过时的休眠命名空间http://hibernate.sourceforge.net/hibernate-configuration。改为使用 命名空间http://www.hibernate.org/dtd/hibernate-configuration 。支持过时的DTD/XSD命名空间可随时在 处删除。 2017年8月12日上午10:42:19 org.hibernate.annotations.common.reflection.java.JavaReflectionManager 信息:HCANN000001:Hibernate Commons Annotations {5.0.1.Final} Aug 12,2017 10:42:19 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 配置 警告:HHH10001002:(!不用于生产使用)中使用Hibernate内置的连接池 2017年8月12日上午十点42分19秒org.hibernate作为。 engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH10001005:在URL [jdbc:mysql:// localhost:3360/hibernate_tutorials]上使用驱动程序[com.mysql.jdbc.Driver] Aug 12,2017 10:42 :20 AM org.hibernate.engine.jdbc.connections.internal.Driv erManagerConnectionProviderImpl buildCreator INFO:HHH10001001:连接属性:{用户=根,密码= ****} 2017年8月12日上午10点42分20秒org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH10001003:自动提交模式:false Aug 12,2017 10:42:20 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections INFO:HHH000115:Hibernate连接池大小:1(min = 1) Aug 12,2017 10:42:20 AM org.hibernate.dialect.Dialect 信息:HHH000400:使用方言:org.hibernate.dialect.MySQLDialect 2017年8月12日上午10:42:21 org.hibernate.envers.boot .internal.EnversServiceImpl配置 信息:Envers集成启用? :如果存在降表hibernate_sequence 休眠::真 休眠如果存在用户 降表休眠:创建表hibernate_sequence(next_val BIGINT) 休眠:插入hibernate_sequence值(1) 休眠:创建表用户(Rollno整数不为空,名称varchar(255),主键(Rollno)) 2017年8月12日上午10:42:24 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources 信息:HHH000476:执行导入脚本'org.hibernate.tool .schema.internal.exec.ScriptSourceInputNonExistentImpl @ 623e088f' Hibernate:从user0选择user0_.Rollno作为Rollno1_0_0_,user0_.Name作为Name2_0_0_ user0_其中user0_.Rollno =? 异常在线程 “主” 显示java.lang.NullPointerException 在com.kittu.hibernate.Main.main(Main.java:24) BUILD停止(总时间:1分14秒)

回答

1

会话。如果数据库中不存在该值,则get()将始终返回null ..在您的情况下,如果id = 1的用户不存在,它将返回null ..如果用户存在id = 1并且名称为null分贝,那么你也会得到空指针异常,同时做System.out.println("student object having name as" +u1.getName());

+1

是的。看起来数据库中没有数据。用户在保存之前试图检索对象。 –

相关问题