实体bean,
Toperator 类
public class Toperator implements java.io.Serializable {
// Fields
private String operatorId;
private String operatorName;
private String operatorPwd;
private String isAdmin;
// Constructors
/** default constructor */
public Toperator() {
}
/** full constructor */
public Toperator(String operatorId, String operatorName,
String operatorPwd, String isAdmin) {
this.operatorId = operatorId;
this.operatorName = operatorName;
this.operatorPwd = operatorPwd;
this.isAdmin = isAdmin;
}
// Property accessors
public String getOperatorId() {
return this.operatorId;
}
public void setOperatorId(String operatorId) {
this.operatorId = operatorId;
}
public String getOperatorName() {
return this.operatorName;
}
public void setOperatorName(String operatorName) {
this.operatorName = operatorName;
}
public String getOperatorPwd() {
return this.operatorPwd;
}
public void setOperatorPwd(String operatorPwd) {
this.operatorPwd = operatorPwd;
}
public String getIsAdmin() {
return this.isAdmin;
}
public void setIsAdmin(String isAdmin) {
this.isAdmin = isAdmin;
}
}
hibernate映射文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="bean.Toperator" table="TOPERATOR">
<id name="operatorId" type="java.lang.String">
<column name="OPERATOR_ID" length="10" />
<generator class="assigned" />
</id>
<property name="operatorName" type="java.lang.String">
<column name="OPERATOR_NAME" length="20" not-null="true" />
</property>
<property name="operatorPwd" type="java.lang.String">
<column name="OPERATOR_PWD" length="20" not-null="true" />
</property>
<property name="isAdmin" type="java.lang.String">
<column name="IS_ADMIN" length="1" not-null="true" />
</property>
</class>
</hibernate-mapping>
hibernate配置文件已加入了这个映射文件。
oracle SQL文件:
CREATE TABLE "SCOTT"."TOPERATOR" ("OPERATOR_ID" CHAR(10) NOT NULL,
"OPERATOR_NAME" VARCHAR2(20) NOT NULL, "OPERATOR_PWD"
VARCHAR2(20) NOT NULL, "IS_ADMIN" CHAR(1) DEFAULT 'N' NOT NULL,
PRIMARY KEY("OPERATOR_ID")) ;
insert into toperator values('A00001','管理员','Y');
这是测试类
import org.hibernate.Session;
import bean.Toperator;
import db.HibernateSessionFactory;
public class Test {
public Toperator getToperatorById(String id) {
Session session=HibernateSessionFactory.getSession();
Toperator t=(Toperator) session.get(Toperator.class, id);
return t;
}
public Toperator getToperatorByName(String name) {
Session session=HibernateSessionFactory.getSession();
Toperator t=(Toperator) session.createCriteria(Toperator.class).add(Restrictions.eq("operatorName", name)).list().get(0);
return t;
}
public static void main(String[] args){
Toperator t=new Test().getToperatorById("A00001");
System.out.println(t);
//Toperator t=new Test().getToperatorByName("管理员");//这个方法又可以。
//System.out.println(t.getIsAdmin());
}
}
这段测试代码的结果t的值为null。
不明白到底是哪里错了。。
14 个解决方案
#1
朋友我还没学框架呢
#2
1、首先查看下你的数据库表是是否有个id为A00001的记录。。。
2、你的代码里加上开启事务和提交事务的代码。。。
简单写了下如下。。。
public Toperator getToperatorById(String id) {
Session session=HibernateSessionFactory.getSession();
Transaction tx=session.beginTransaction();
Toperator t=(Toperator) session.get(Toperator.class, id);
tx.comment();
return t;
}
2、你的代码里加上开启事务和提交事务的代码。。。
简单写了下如下。。。
public Toperator getToperatorById(String id) {
Session session=HibernateSessionFactory.getSession();
Transaction tx=session.beginTransaction();
Toperator t=(Toperator) session.get(Toperator.class, id);
tx.comment();
return t;
}
#3
输出sql语句看看。
#4
CREATE TABLE "SCOTT"."TOPERATOR" ("OPERATOR_ID" CHAR(10) NOT NULL,
"OPERATOR_NAME" VARCHAR2(20) NOT NULL, "OPERATOR_PWD"
VARCHAR2(20) NOT NULL, "IS_ADMIN" CHAR(1) DEFAULT 'N' NOT NULL,
PRIMARY KEY("OPERATOR_ID")) ;
insert into toperator values('A00001','管理员','Y');
LZ忘记commit;了
#5
查詢是不用commit()的
#6
4楼的 意思是看你数据库里究竟 创建了没有 表和记录
。。。。。。。
个人感觉主键生成策略有问题
还有hibernate配置文件可能有问题
。。。。。。。
个人感觉主键生成策略有问题
还有hibernate配置文件可能有问题
#7
你数据库中有没有主键为A00001的记录
如果有注意数据库中的"A00001"是否有空格
如果有注意数据库中的"A00001"是否有空格
#8
可能是插入语句后,没有提交吧,所以在程序中得不到值。
#9
你没有开启事务
Transaction tr=null;
...
...
tr=hibernateSession.beginTransaction();
.....
..
tr.commit();
#10
我也同意是事物没有提交的原因,不知道楼下各位有啥想法
#11
把输出的sql语句在数据测试一下,如果在数据库内有,看看你的映射文件的主键生成策略是不有问题
#12
在插入数据时可能没有创建事务,没有将事务提交
#13
查询是不需要开启事务的。个人认为6楼是正解
#14
<id name="operatorId" type="java.lang.String">
<column name="OPERATOR_ID" length="10" />
<generator class=" identity" />
</id>
該為identity試試看
<column name="OPERATOR_ID" length="10" />
<generator class=" identity" />
</id>
該為identity試試看
#1
朋友我还没学框架呢
#2
1、首先查看下你的数据库表是是否有个id为A00001的记录。。。
2、你的代码里加上开启事务和提交事务的代码。。。
简单写了下如下。。。
public Toperator getToperatorById(String id) {
Session session=HibernateSessionFactory.getSession();
Transaction tx=session.beginTransaction();
Toperator t=(Toperator) session.get(Toperator.class, id);
tx.comment();
return t;
}
2、你的代码里加上开启事务和提交事务的代码。。。
简单写了下如下。。。
public Toperator getToperatorById(String id) {
Session session=HibernateSessionFactory.getSession();
Transaction tx=session.beginTransaction();
Toperator t=(Toperator) session.get(Toperator.class, id);
tx.comment();
return t;
}
#3
输出sql语句看看。
#4
CREATE TABLE "SCOTT"."TOPERATOR" ("OPERATOR_ID" CHAR(10) NOT NULL,
"OPERATOR_NAME" VARCHAR2(20) NOT NULL, "OPERATOR_PWD"
VARCHAR2(20) NOT NULL, "IS_ADMIN" CHAR(1) DEFAULT 'N' NOT NULL,
PRIMARY KEY("OPERATOR_ID")) ;
insert into toperator values('A00001','管理员','Y');
LZ忘记commit;了
#5
查詢是不用commit()的
#6
4楼的 意思是看你数据库里究竟 创建了没有 表和记录
。。。。。。。
个人感觉主键生成策略有问题
还有hibernate配置文件可能有问题
。。。。。。。
个人感觉主键生成策略有问题
还有hibernate配置文件可能有问题
#7
你数据库中有没有主键为A00001的记录
如果有注意数据库中的"A00001"是否有空格
如果有注意数据库中的"A00001"是否有空格
#8
可能是插入语句后,没有提交吧,所以在程序中得不到值。
#9
你没有开启事务
Transaction tr=null;
...
...
tr=hibernateSession.beginTransaction();
.....
..
tr.commit();
#10
我也同意是事物没有提交的原因,不知道楼下各位有啥想法
#11
把输出的sql语句在数据测试一下,如果在数据库内有,看看你的映射文件的主键生成策略是不有问题
#12
在插入数据时可能没有创建事务,没有将事务提交
#13
查询是不需要开启事务的。个人认为6楼是正解
#14
<id name="operatorId" type="java.lang.String">
<column name="OPERATOR_ID" length="10" />
<generator class=" identity" />
</id>
該為identity試試看
<column name="OPERATOR_ID" length="10" />
<generator class=" identity" />
</id>
該為identity試試看