如下两个表,一对多的关系:riskDutyFacotr<->riskDutyFactorUnit
---------------------------
create table riskDutyFactor
(
ID INTEGER not null,
factorName CHAR(20),
specComments VARCHAR(50),
sign CHAR(1),
constraint P_riskDutyFactor_I primary key (ID)
);
--==============================================================
-- Table: riskDutyFactorUnit
--==============================================================
create table riskDutyFactorUnit
(
ID INTEGER not null,
rdf_ID INTEGER,
factorUnit CHAR(20),
value CHAR(30),
constraint P_Key_1 primary key (ID)
);
---------------------------
service中操作两个表的代码如下:
//保存一个责任要素
public void saveRiskdutyfactor(String factorName,String factorSign,String factorUnit,String factotValue){
riskDutyFactor.setFactorname(factorName);
if(factorSign.equals("factorSign")){
riskDutyFactor.setSign("0");
}else{
riskDutyFactor.setSign("1");
}
riskDutyFactorUnit.setFactorunit(factorUnit);
riskDutyFactorUnit.setValue(factotValue);
// if(riskDutyFactor.getRiskdutyfactorunits().add(riskDutyFactorUnit)==true){
// System.out.println("success add children! ");
// }经过测试是可以执行该段代码的
riskDutyFactor.getRiskdutyfactorunits().add(riskDutyFactorUnit);
this.getRiskDutyFactorDAO().saveRiskdutyfactor(riskDutyFactor);
this.getRiskDutyFactorUnitDAO().saveRiskDutyFactorUnit(riskDutyFactorUnit);
}
----------------------
spring配置文件为:
<bean id="proxyTemplate" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="riskDutyFactorTarget" parent="proxyTemplate">
<property name="target">
<bean class="com.gi.service.defineFactor.spring.RiskDutyFactorServiceImpl">
<property name="riskDutyFactorDAO">
<ref local="riskDutyFactorDAO" />
</property>
<property name="riskDutyFactorUnitDAO">
<ref local="riskDutyFactorUnitDAO" />
</property>
</bean>
</property>
</bean>
-----------------------
可以成功执行日志为:
Hibernate: values nextval for S_riskDutyFactor
Hibernate: values nextval for S_riskDutyFactorUnit
Hibernate: insert into XFLIU.RISKDUTYFACTOR (FACTORNAME, SIGN, ID) values (?, ?, ?)
Hibernate: insert into XFLIU.RISKDUTYFACTORUNIT (RDF_ID, FACTORUNIT, VALUE, ID) values (?, ?, ?, ?)
但是没有将两个表关联起来,为什么?我一直怀疑是我spring的配置有问题,两个dao在两个session里执行的,对吗?如果正确我应该怎么改进?谢谢大家!
---------------------------
create table riskDutyFactor
(
ID INTEGER not null,
factorName CHAR(20),
specComments VARCHAR(50),
sign CHAR(1),
constraint P_riskDutyFactor_I primary key (ID)
);
--==============================================================
-- Table: riskDutyFactorUnit
--==============================================================
create table riskDutyFactorUnit
(
ID INTEGER not null,
rdf_ID INTEGER,
factorUnit CHAR(20),
value CHAR(30),
constraint P_Key_1 primary key (ID)
);
---------------------------
service中操作两个表的代码如下:
//保存一个责任要素
public void saveRiskdutyfactor(String factorName,String factorSign,String factorUnit,String factotValue){
riskDutyFactor.setFactorname(factorName);
if(factorSign.equals("factorSign")){
riskDutyFactor.setSign("0");
}else{
riskDutyFactor.setSign("1");
}
riskDutyFactorUnit.setFactorunit(factorUnit);
riskDutyFactorUnit.setValue(factotValue);
// if(riskDutyFactor.getRiskdutyfactorunits().add(riskDutyFactorUnit)==true){
// System.out.println("success add children! ");
// }经过测试是可以执行该段代码的
riskDutyFactor.getRiskdutyfactorunits().add(riskDutyFactorUnit);
this.getRiskDutyFactorDAO().saveRiskdutyfactor(riskDutyFactor);
this.getRiskDutyFactorUnitDAO().saveRiskDutyFactorUnit(riskDutyFactorUnit);
}
----------------------
spring配置文件为:
<bean id="proxyTemplate" lazy-init="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="riskDutyFactorTarget" parent="proxyTemplate">
<property name="target">
<bean class="com.gi.service.defineFactor.spring.RiskDutyFactorServiceImpl">
<property name="riskDutyFactorDAO">
<ref local="riskDutyFactorDAO" />
</property>
<property name="riskDutyFactorUnitDAO">
<ref local="riskDutyFactorUnitDAO" />
</property>
</bean>
</property>
</bean>
-----------------------
可以成功执行日志为:
Hibernate: values nextval for S_riskDutyFactor
Hibernate: values nextval for S_riskDutyFactorUnit
Hibernate: insert into XFLIU.RISKDUTYFACTOR (FACTORNAME, SIGN, ID) values (?, ?, ?)
Hibernate: insert into XFLIU.RISKDUTYFACTORUNIT (RDF_ID, FACTORUNIT, VALUE, ID) values (?, ?, ?, ?)
但是没有将两个表关联起来,为什么?我一直怀疑是我spring的配置有问题,两个dao在两个session里执行的,对吗?如果正确我应该怎么改进?谢谢大家!