hibernate向Oracle里添加数据失败。查询数据能够成功

J2EE 码拜 4年前 (2016-09-20) 784次浏览
entity类set方法都是能够设置成功,然后返回的DTO类也是能够返回正确的字符串,就是用PL/SQL查看表的时候,表是没有更新。弄了一个下午,各种类,hibernate的配置文件也看过了。然后ID用的是本人建的一个sequence。
下面贴上部分代码:
POJO:
@Entity
public class RegisterPO {
private static Logger logger = Logger.getLogger(RegisterPO.class);
private static IPersistence ipS = Platform.getPersistence();
/**
* 用户注册
*/
public void register(Register register) {
TransManager tm = new TransManager();
try {
tm.begin();
Long register_id = ipS.getSequenceL(“register_id”);
register.setRegister_id(register_id);
ipS.save(register);
tm.commit();
} catch (Exception e) {
tm.rollback();
logger.error(e);
throw new YLZCBPException(e);
}
}
}
服务类:
@Entity
public class Register {
static Logger logger = Logger.getLogger(Register.class);
public String register(int hospitalId, int deptCode, int doctorNo,int regType, String appointmentDate, int timeFrameCode,
int scheduleId, int sourceCode, int waitNumber, int cardtype,int cardNo, String name, String idCard, String phone) {
com.register.entity.Register register = new com.register.entity.Register();
RegisterPO po = new RegisterPO();
RegisterDTO dto = new RegisterDTO();
try {
register.setHospitalId(hospitalId);
register.setAppointmentDate(appointmentDate);
register.setCardNo(cardNo);
register.setCardtype(cardtype);
register.setDeptCode(deptCode);
register.setDoctorNo(doctorNo);
register.setIdCard(idCard);
register.setName(name);
register.setPhone(phone);
register.setRegType(regType);
register.setScheduleId(scheduleId);
register.setSourceCode(sourceCode);
register.setTimeFrameCode(timeFrameCode);
register.setWaitNumber(waitNumber);
dto.setSuccess(1);
dto.setMessage(“预约成功”);
po.register(register);
} catch (YLZCBPException ye) {
logger.info(ye.getMessage());
} catch (Exception e) {
dto.setSuccess(2);
dto.setMessage(“预约失败”);
logger.error(e);
}
return ReaderSoapXmlOut.readerSoapXMlOut(dto.getColset(),
dto.getStructsList(), “”);
}
}
DTO:
@Entity
public class RegisterDTO extends BaseDTO {
@OutPara(index = 0, label = “能否成功”)
int success;
@OutPara(index = 1, label = “提示消息”)
String message;
public int getSuccess() {
return success;
}
public void setSuccess(int success) {
this.success = success;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
打印出的信息如下,就是提示我们能否成功。在服务类添加的。
<resultset name=”structs”>
<row  label=”能否成功” columnname=”success” typename=”Varchar2″ />
<row  label=”提示消息” columnname=”message” typename=”Varchar2″ />
</resultset>
<resultset name=”retrieve”><row success=”1″
message=”预约成功”
/>
</resultset>
</out:business>
</soap:Body>
</soap:Envelope>
现在就是能返回这个字符串,跟以前的效果一样。然后假如返回register.getXXX();这样是能获得到值的。也就是数据是放到实体类里面是成功的,现在就是没有进入到数据库。
以下这个是Register.hbm.xml的配置文件。就是hibernate的配置文件
<id name=”register_id” type=”java.lang.Long” column=”REGISTER_ID”>
<generator class=”assigned”></generator>
</id>
<property name=”hospitalId” type=”int” column=”HOSPITALID”/>
<property name=”deptCode” type=”int” column=”DEPTCODE”/>
<property name=”doctorNo” type=”int” column=”DOCTORNO”/>
<property name=”regType” type=”int” column=”REGTYPE”/>
<property name=”appointmentDate” type=”java.lang.String” column=”APPOINTMENTDATE”/>
<property name=”timeFrameCode” type=”int” column=”TIMEFRAMECODE”/>
<property name=”scheduleId” type=”int” column=”SCHEDULEID”/>
<property name=”sourceCode” type=”int” column=”SOURCECODE”/>
<property name=”waitNumber” type=”int” column=”WAITNUMBER”/>
<property name=”cardtype” type=”int” column=”CARDTYPE”/>
<property name=”cardNo” type=”int” column=”CARDNO”/>
<property name=”name” type=”java.lang.String” column=”NAME”/>
<property name=”idCard” type=”java.lang.String” column=”IDCARD”/>
<property name=”phone” type=”java.lang.String” column=”PHONE”/>
没有提示错误信息。 就是数据加不进去。 麻烦大家帮看看,谢谢。  分数不多。希望大家能帮忙
解决方案

15

引用:
Quote: 引用:

搞不清楚现在想问什么,查询成功插入失败的话首先去检查事务的配置

主要的问题本人说一下吧。上面的确实太长了,一般人都会懒得看的。
就是
<id name=”registerid” type=”java.lang.Long” column=”register”>
<generator class=”assigned”  />
</id>
在XXX.hbm.xml文件里设置的这个属性,就是当前这张表的ID,没错吧。 然后column就是在数据库那边设置的当前表的primary key。然后本人就是提示”register” 标识符无效。把里面换成什么,就提示什么无效。当然,换的时候,在数据库那边的表也会跟着换。
那那个事务是在哪里配置呀。貌似是没有用到Spring

报错这个问题跟事务无关,看下你实体中的这个字段以及数据库中的名字及类型能否对应

20

hibernate向Oracle里添加数据失败。查询数据能够成功
假如单用hibernate的话,本人是这么干的。

5

数据库的id是不是设置自增长了?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明hibernate向Oracle里添加数据失败。查询数据能够成功
喜欢 (0)
[1034331897@qq.com]
分享 (0)