hibernate 未明确定义列 小记[通俗易懂]

hibernate 未明确定义列 小记[通俗易懂] 在写关联表的实体类时,用测试代码去运行,出现16:00:30,817ERRORJDBCExceptionReporter:72-ORA-00918:未明确定义列16:00:30,833ERRORPersistSpringImpl:244-[PersistImpl][find(queryString,offset,length)]hql:fromcom.esse.pro

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 在写关联表的实体类时,用测试代码去运行,出现
16:00:30,817 ERROR JDBCExceptionReporter:72 – ORA-00918: 未明确定义列

16:00:30,833 ERROR PersistSpringImpl:244 – [PersistImpl][find(queryString, offset, length)] hql: from com.esse.projects.cpinfo.entity.MemberList
org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not execute query; bad SQL grammar [select memberlist0_.Member_ID as Member1_87_, memberlist0_.MEMBERRECORD_ID as MEMBERRE2_87_, memberlist0_.MEMBER_ID as MEMBER1_87_ from MemberList memberlist0_]; nested exception is java.sql.SQLException: ORA-00918: 未明确定义列

java.sql.SQLException: ORA-00918: 未明确定义列
我的各个相应实体,配置文件如下:
数据库关系图如下:

概念模型

hibernate 未明确定义列 小记[通俗易懂]下一:物理模型

hibernate 未明确定义列 小记[通俗易懂]1.实体类
public class MemberList extends AbstractEntity implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 30680140753579543L;
    private MemberListPK id;
    private MemberRecord memberRecord;
    private Member member;

    public MemberRecord getMemberRecord() {

        return memberRecord;
    }
    public void setMemberRecord(MemberRecord memberRecord) {

        this.memberRecord = memberRecord;
    }
    public Member getMember() {

        return member;
    }
    public void setMember(Member member) {

        this.member = member;
    }
    public MemberListPK getId() {

        return id;
    }
    public void setId(MemberListPK id) {

        this.id = id;
    }

}

2.MemberListPK联合主键实体类
public class MemberListPK implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = 8074810556884497882L;
    private long memberId;
    private long memberRecordId;

    public long getMemberId() {

        return memberId;
    }

    public void setMemberId(long memberId) {

        this.memberId = memberId;
    }

    public long getMemberRecordId() {

        return memberRecordId;
    }

    public void setMemberRecordId(long memberRecordId) {

        this.memberRecordId = memberRecordId;
    }

    public boolean equals(Object other) {

        if (this == other) {

            return true;
        }
        if (!(other instanceof MemberListPK)) {

            return false;
        }
        MemberListPK castOther = (MemberListPK)other;
        return new EqualsBuilder()
            .append(this.getMemberId(), castOther.getMemberId())
            .append(this.getMemberRecordId(), castOther.getMemberRecordId())
            .isEquals();
    }

    public int hashCode() {

        return new HashCodeBuilder()
            .append(this.getMemberId())
            .append(this.getMemberRecordId())
            .toHashCode();
    }

}
3.hbm.xml文件
<?xml version=”1.0″?>
<!DOCTYPE hibernate-mapping PUBLIC
    “-//Hibernate/Hibernate Mapping DTD 3.0//EN”
    “http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

<hibernate-mapping>
    <class name=”com.esse.projects.cpinfo.entity.MemberList”
        table=”MemberList”>

        <composite-id name=”id”
            class=”com.esse.projects.cpinfo.entity.MemberListPK”>
            <key-property name=”memberId” type=”long”
                column=”Member_ID” />
            <key-property name=”memberRecordId” type=”long”
                column=”MEMBERRECORD_ID” />
        </composite-id>

        <!– Associations –>
        <many-to-one name=”member” class=”com.esse.projects.cpinfo.entity.Member” insert=”false” update=”false”>
            <column name=”MEMBER_ID” />
        </many-to-one>
        <many-to-one name=”memberRecord” class=”com.esse.projects.cpinfo.entity.MemberRecord” insert=”false” update=”false”>
            <column name=”MEMBERRECORD_ID” />
        </many-to-one>
    </class>
</hibernate-mapping>
4.在运行测试类时,会出现 未明确定义列,查看hibernat生成的sql语句,发现sql执行的是:
select memberlist0_.Member_ID       as Member1_87_,
       memberlist0_.MEMBERRECORD_ID as MEMBERRE2_87_,
       memberlist0_.MEMBER_ID       as MEMBER1_87_
  from MemberList memberlist0_
为什么对于MEMBER_ID字段查询两次呢,想不明白,仔细查看MemberList.hbm.xml文件原来,
<key-property name=”memberId” type=”long”
                column=”Member_ID” />
<many-to-one name=”member” class=”com.esse.projects.cpinfo.entity.Member” insert=”false” update=”false”>
            <column name=”MEMBER_ID” />
对于同一个MEMBER_ID字段,两个大小写不一致。导致sql生成的也不一样。
解决方法:把MEMBER_ID字段统一,要不全大写,要不全小写。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189147.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CentOS7中配置网络连接[通俗易懂]

    CentOS7中配置网络连接[通俗易懂]    刚在VMware安装好的CentOS7,默认安装是没有开启配置网卡信息的,所以连不上网。尝试用两种配置来让CentOS7开启联网功能,一种是直接打开网络功能自动获取ip,会在设定的网段下面随机分配一个ip,另一种是设置固定ip,出于某些特殊的需求,例如要在局域网内做端口映射,需要将虚拟机设置成使用固定的局域网IP,即使虚拟机重启了,其局域网ip仍然不变。一、自动获取ip  …

    2022年5月27日
    32
  • endnote的参考文献格式怎么设置成和知网一致(endnote如何替换参考文献)

    1、先偷懒吧,到EndNote的主站搜索,看是否有你要的Journal格式;如果没有只有自己学啦。2、打开一个EndNote数据库/Edit/OutputStyles/Edit………意思是将你默认的参考文献格式进行修改,因为重新编写有些语法可能不太会。技巧,先从找一个参考文献和自己要求相似的格式。如没有经验,SCI格式是缩略格式,NeuroReport是完整格式(在中国比较流行的相似格式)。我就…

    2022年4月16日
    350
  • windows ftp 被动模式_通常ftp用主动还是被动模式

    windows ftp 被动模式_通常ftp用主动还是被动模式环境:windowsserver2012R2FTPclientFileZilla3.7.3windowsserver2012服务器搭建完毕后默认为主动式(测试发现windows10搭建完毕默认为被动式)由于开发人员所做视频推流不支持主动式故需要更改为被动式主动式:有客户端N端口发起连接到服务器端21端口传输数据时由服务器端20端…

    2022年9月11日
    1
  • JWT token无效invalid signature

    JWT token无效invalid signaturedjango+JWT生成发token无效请求需要验证的接口,返回invalidsignature我的user模型是这样的后面看https://www.jianshu.com/p/f0a55f39dfa8链接说,jwt生成token时默认是需要用到username,并且username需要保证唯一,或者重写UserManager的get_by_natura…

    2022年9月13日
    0
  • 一键锁定计算机快捷方式,还原win8系统创建一键锁定计算机的快捷方式的技巧…

    一键锁定计算机快捷方式,还原win8系统创建一键锁定计算机的快捷方式的技巧…今天和大家分享一下关于对win8系统创建一键锁定计算机的快捷方式设置的方法,在使用win8系统的过程中经常不知道如何去对win8系统创建一键锁定计算机的快捷方式进行设置,有什么好的办法去设置win8系统创建一键锁定计算机的快捷方式呢?在这里小编教你只需要1、首先在桌面上的空白处鼠标右击选择“新建–快捷方式”,然后在弹出来的创建快捷方式界面中,在“请键入对象的位置”框中输入:rundll32.ex…

    2022年7月21日
    14
  • C++ 使用LockWorkStation()的过程遇到的问题[通俗易懂]

    C++ 使用LockWorkStation()的过程遇到的问题[通俗易懂]关于函数“LockWorkStation()”,参见:https://msdn.microsoft.com/en-us/library/windows/desktop/aa376875.aspxHo

    2022年7月4日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号