Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 奇怪的休眠错误_Java_Mysql_Spring_Hibernate_Exception - Fatal编程技术网

Java 奇怪的休眠错误

Java 奇怪的休眠错误,java,mysql,spring,hibernate,exception,Java,Mysql,Spring,Hibernate,Exception,我正在从事一个Java项目,我对自己偶然遇到的情况感到困惑 我正在用mac osx mountain lion开发mac。我使用的是eclipse,所有配置都正确,并且已经以这种方式开发了很长一段时间,没有出现任何问题 我将MySQL和Hibernate与HBM映射文件一起使用,我将使用Spring通过指示应该使用哪些映射文件将它们联系在一起。最近,我尝试向表中添加一个新列,更新域对象,并更新hbm映射文件 现在,我开始得到一个错误: “字段列表”中的未知列“dateSent” 即使列在映射文件

我正在从事一个Java项目,我对自己偶然遇到的情况感到困惑

我正在用mac osx mountain lion开发mac。我使用的是eclipse,所有配置都正确,并且已经以这种方式开发了很长一段时间,没有出现任何问题

我将MySQL和Hibernate与HBM映射文件一起使用,我将使用Spring通过指示应该使用哪些映射文件将它们联系在一起。最近,我尝试向表中添加一个新列,更新域对象,并更新hbm映射文件

现在,我开始得到一个错误:

“字段列表”中的未知列“dateSent”

即使列在映射文件中,列在数据库中,也在域对象中

然后我删除了它并用Maven重建了一切,现在我遇到了一个更奇怪的问题,我的代码删除了对列的所有引用,从数据库中删除了列,从hbm映射文件中删除了列。然而,我仍然看到Hibernate抛出了一个关于列的错误,好像它仍然存在于我的代码中的某个地方,但它没有。更奇怪的是,Hibernate的输出并没有显示出试图插入一个包含有问题列的记录的不当使用。。。请参阅下面的错误:“Hibernate:在消息中插入(用户ID、内容、位置)值(?,?)”

下面是我得到的错误:

        Hibernate: insert into messages (userid, content, location) values (?, ?, ?)
        18:08:19,154  WARN JDBCExceptionReporter:77 - SQL Error: 1054, SQLState: 42S22
        18:08:19,155 ERROR JDBCExceptionReporter:78 - Unknown column 'dateSent' in 'field list'
        18:08:19,175 ERROR MessageProcessorImpl:724 - org.springframework.dao.InvalidDataAccessResourceUsageException: could not insert: [com.app.domain.Message]; SQL [insert into messages (userid, content, location) values (?, ?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: could not insert: [com.app.domain.Message]
            at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:629)
        ... 50 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'dateSent' in 'field list'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2643)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2362)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2280)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2265)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
    ... 66 more
mysql数据库或使用Hibernate的java应用程序之间是否存在类似于缓存的东西会导致这种情况

我重新启动了计算机,执行了Maven clean/Maven安装以刷新所有内容。在我的代码中搜索字符串dateSent,但在代码中找不到该单词的引用,它仍在抱怨

如有任何建议,将不胜感激

以下是HBM文件:

<?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 package="com.app.domain">
    <class name="Message" table="messages" >
        <id name="messageId" column="messageId">
            <generator class="native" />
        </id>
        <property name="userId" column="userId"/>
        <property name="content" column="content"/>
        <property name="location" column="location"/>
    </class>
</hibernate-mapping>

我甚至将我的代码库恢复到上一个稳定的版本,但我仍然有这个问题。问题最终是由于引用我删除的字段的表上的历史触发器造成的


异常消息似乎不准确地表明问题出在我的映射上。

您或您是否对名为
PrecurgicalMembersent
的列进行了映射?抱歉,我的示例中出现了错误,我在示例中更改了列的名称,但在代码示例中忽略了该名称。示例现在具有上面正确的编辑输出。请尝试删除您的本地Maven存储库,然后重建。好主意,现在就尝试!
package com.app.domain;

import java.util.Date;
import java.util.List;

public class Message {
    private long messageId;
    private long userId;
    private String content;
    private String location;

    public long getMessageId() {
        return messageId;
    }
    public void setMessageId(long messageId) {
        this.messageId = messageId;
    }
    public long getUserId() {
        return userId;
    }
    public void setUserId(long userId) {
        this.userId = userId;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
}