Hibernate_should be mapped with insert="false" update="false"的解决方法

本文详细阐述了在配置Hibernate单向多对一时遇到的启动异常问题,原因在于账户实体类中重复定义了ROLE_ID属性。通过删除Account类中的 ROLE_ID 属性及其相关getter和setter方法,并在对应的hibernate-mapping文件中移除相应的property元素,成功解决了冲突问题。

今天在配置hibernate 单向多对一映射时出现了启动异常,第一句末尾出现了should be mapped with insert="false" update="false"提示

原因是存在账户和角色的多对一关系

在账户对应的实体类中添加了ROLE_ID属性,之后又配置了


导致ROLE_ID重复


解决方法:删除Account类中的ROLE_ID属性和对应get,set方法,在Account.hbm.xml中删除对应的property即可



以下为修改后的部分源码

ACCOUNT 类:

public class Account {

private Integer accountid;


private String accountname;
private String password;
private Integer aisuser;

private Role accrol;


public Integer getAccountid() {
return accountid;
}
public void setAccountid(Integer accountid) {
this.accountid = accountid;
}


public String getAccountname() {
return accountname;
}
public void setAccountname(String accountname) {
this.accountname = accountname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAisuser() {
return aisuser;
}
public void setAisuser(Integer aisuser) {
this.aisuser = aisuser;
}
public Role getAccrol() {
return accrol;
}
public void setAccrol(Role accrol) {
this.accrol = accrol;
}
}


ROLE类:

public class Role {

private Integer rid;
private String rname;
private Integer ruse;

private Set<Function> funcset;

public Integer getRid() {
return rid;
}
public void setRid(Integer rid) {
this.rid = rid;
}
public String getRname() {
return rname;
}
public void setRname(String rname) {
this.rname = rname;
}
public Integer getRuse() {
return ruse;
}
public void setRuse(Integer ruse) {
this.ruse = ruse;
}
public Set<Function> getFuncset() {
return funcset;
}
public void setFuncset(Set<Function> funcset) {
this.funcset = funcset;
}
}


ACCOUNT.HBM.XML:

<hibernate-mapping package="cn.edu.teachInNet.main.common.entity">


<class name="Account" table="account">

<id name="accountid" type="java.lang.Integer">
<column name="ACCOUNT_ID" />
<generator class="identity" />
</id>

<property name="accountname" type="java.lang.String">
<column name="ACCOUNT_NAME" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" />
</property>
<property name="aisuser" type="java.lang.Integer">
<column name="ACCOUNT_ISUSER" />
</property>
<!-- 映射单向多对一关系,多个账户对应一个角色 -->
<many-to-one name="accrol" class="Role" column="ROLE_ID"></many-to-one>

</class>


</hibernate-mapping>    


ROLE.HBM.XML:

<hibernate-mapping package="cn.edu.teachInNet.main.common.entity">


<class name="Role" table="role">

<id name="rid" type="java.lang.Integer">
<column name="ROLE_ID" />
<generator class="identity" />
</id>

<property name="rname" type="java.lang.String">
<column name="ROLE_NAME" />
</property>

<property name="ruse" type="java.lang.Integer">
<column name="ROLE_ISUSER" />
</property>
<!-- 映射单向多对多关系,角色和权限多对多 -->
<set name="funcset" table="rol_fun" cascade="save-update" >
<key>
<column name="ROLE_ID"></column>
</key>

<many-to-many class="Function" column="FUNCTION_ID"/>

</set>

</class>


</hibernate-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值