java.sql.SQLException: ORA-00904: "SDSYSOPERA0_"."NUM": 标识符无效Oracle数据库中没有创建外键。。

解决方案 »

  1.   

    描述信息太少了,Hibernate多对多是通过中间表对应的,没有创建外键,把你的SQL或HQL语句贴出来
      

  2.   

    明天贴。谢谢楼上配置文件我检查很多遍了。。
    不知道是不是因为关联键“Num”的缘故
      

  3.   

    public class SdSysMenu implements java.io.Serializable { // Fields
    private static final long serialVersionUID = -1513391654427196155L;
    private String num;
    private Long id;
    private String title;
    private String root;
    private String icon;
    private String fatherid;
    private String linkStr;
    private Long orderNum;
    private Long isFather;
    private Long isSys;
    private Long qybz;
    private Set<SdSysOperate> sdSysOperate = new HashSet<SdSysOperate>();
            //……省略get、set方法
         }SdSysMenu映射文件部分
    <set name="sdSysOperate" table="SD_SYS_FunctionOperate" inverse="true" cascade="save-update" lazy="false">            
                 <key column="MenuNum"/>
                 <many-to-many class="com.ideamov.model.SdSysOperate" column="Num"/>
            </set>

    public class SdSysOperate implements java.io.Serializable { // Fields
    private static final long serialVersionUID = 3418481003619613339L;
    private String num;
    private Long id;
    private String title;
    private String icon;
    private String linkStr;
    private Long orderNum;
    private Long qybz;
    private String sfxz;//是否选中
    private Set<SdSysMenu> sdMenu = new HashSet<SdSysMenu>();        //……省略get、set
    }SdSysOperate 映射文件(部分)
    <set name="sdMenu" table="SD_SYS_FunctionOperate" inverse="true" cascade="save-update">            
                 <key column="OperateNum"/>
                 <many-to-many class="com.ideamov.model.SdSysMenu" column="Num"/>
            </set>
      

  4.   

    采用映射文件的方式基本没用过,我使用的是注解。你的映射文件有问题,改成下面的试一下
    SdSysMenu映射文件部分
    <set name="sdSysOperate" table="SD_SYS_FunctionOperate" inverse="true" cascade="save-update" lazy="false"> 
    <key column="MenuNum"/>
    <many-to-many class="com.ideamov.model.SdSysOperate" column="OperateNum"/>
    </set>
    SdSysOperate 映射文件(部分)
    <set name="sdMenu" table="SD_SYS_FunctionOperate" inverse="true" cascade="save-update"> 
    <key column="OperateNum"/>
    <many-to-many class="com.ideamov.model.SdSysMenu" column="MenuNum"/>
    </set>
      

  5.   

    那两个字段是用来定义映射关系表里的字段,如果你没有在hibernate.cfg.xml中打开根据hibernate字段创建表的配置的话需要手工创建表,不过建议你设置<property name="hibernate.hbm2ddl.auto">update</property>。
    我做了一个示例,你可以看看http://blog.csdn.net/cuihaiyang/archive/2011/04/12/6317900.aspx