前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >hibernate 未明确定义列 小记[通俗易懂]

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

作者头像
全栈程序员站长
发布2022-09-27 14:00:59
3290
发布2022-09-27 14:00:59
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

在写关联表的实体类时,用测试代码去运行,出现 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 未明确定义列 小记[通俗易懂]

下一:物理模型

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.cn/189147.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档