// 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 db中创建了数据库名称用户
错误
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:已识别的过时的hibernate命名空间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} 2017年8月12日上午10:42:19 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 配置 警告:HHH10001002:使用Hibernate内置连接池(不用于生产!) 2017年8月12日上午10:42:19 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 信息:HHH10001005:在URL [jdbc:mysql:// localhost:3360 / hibernate_tutorials]上使用驱动程序[com.mysql.jdbc.Driver] 2017年8月12日上午10:42:20 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 信息:HHH10001001:连接属性:{user = root,password = ****} 2017年8月12日上午10:42:20 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 信息:HHH10001003:自动提交模式:false 2017年8月12日上午10:42:20 org.hibernate.engine.jdbc.connections.internal.PooledConnections 信息:HHH000115:Hibernate连接池大小:1(min = 1) 2017年8月12日上午10:42:20 org.hibernate.dialect.Dialect 信息:HHH000400:使用方言:org.hibernate.dialect.MySQLDialect 2017年8月12日上午10:42:21 org.hibernate.envers.boot.internal.EnversServiceImpl configure 信息:启用Envers集成? :是的 Hibernate:如果存在hibernate_sequence,则删除表 Hibernate:drop table if exists User Hibernate:创建表hibernate_sequence(next_val bigint) Hibernate:插入hibernate_sequence值(1) Hibernate:create table User(Rollno integer not null,Name varchar(255),primary key(Rollno)) 2017年8月12日上午10:42:24 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources 信息:HHH000476:执行导入脚本&#39; org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@623e088f' Hibernate:选择user0_.Rollno作为Rollno1_0_0_,user0_.Name作为Name2_0_0_来自User user0_,其中user0_.Rollno =? 线程&#34; main&#34;中的例外情况显示java.lang.NullPointerException 在com.kittu.hibernate.Main.main(Main.java:24) BUILD STOPPED(总时间:1分14秒)
答案 0 :(得分:1)
如果数据库中没有值,则Session.get()始终返回null。在您的情况下,如果id = 1的用户不存在,它将返回null ..如果用户在db中存在id = 1且name为null,那么在执行System.out.println("student object having name as" +u1.getName());