Rud*_*koŭ 6 java many-to-many hibernate
我希望有多对多的关系.之间PLAYER和PRIVILEGE.你能帮我修一下我的.xml配置吗?
预期结果:
我希望能够执行:String hql = "from Player as p right outer join p.privilages as priv";
实际: 到目前为止我得到:
org.hibernate.MappingException:外键(FK8CD18EE134F64423:PLAYER [ID]))必须与引用的主键具有相同的列数(PRIVILAGE [ID,PRIVILAGE])
<hibernate-mapping>
<class name="model.Privilage" table="PRIVILAGE">
<id name="id" type="int" >
<column name="ID" precision="5" scale="0"/>
<generator class="increment"/>
</id>
<set name="players" table="PLAYER"
inverse="false" lazy="true" fetch="select" cascade="all" >
<key>
<column name="ID"/>
</key>
<many-to-many entity-name="model.Player">
<column name="ID" not-null="true" />
</many-to-many>
</set>
<property name="privilage" type="string">
<column name="PRIVILAGE" length="20" not-null="true" />
</property>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
和
<class name="model.Player" table="PLAYER">
<id name="playerId" type="int" >
<column name="ID" precision="5" scale="0"/>
<generator class="sequence">
<param name="sequence">PLAYER_SEQ</param>
</generator>
</id>
<set name="privilages" table="PRIVILAGE"
inverse="false" lazy="true" fetch="select" cascade="all" >
<key>
<column name="ID"/>
</key>
<many-to-many entity-name="model.Privilage">
<column name="PRIVILAGE" not-null="true" />
</many-to-many>
</set>
<!-- ... -->
</class>
Run Code Online (Sandbox Code Playgroud)
小智 3
您应该引用名为 PLAYER_PRIV 的多对多关系表:
<set name="privilages" table="PLAYER_PRIV"
inverse="true" lazy="true" fetch="select">
<key>
<column name="ID"/>
</key>
<many-to-many entity-name="model.Privilage">
<column name="PRIV_ID" not-null="true"/>
</many-to-many>
</set>
Run Code Online (Sandbox Code Playgroud)
和
<set name="players" table="PLAYER_PRIV"
inverse="false" lazy="true" fetch="select">
<key>
<column name="ID"/>
</key>
<many-to-many entity-name="model.Player">
<column name="PLAYER_ID" not-null="true"/>
</many-to-many>
</set>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |