‘field list’gwt项目中的未知列’… jdoDetachedState’

我有奇怪的问题。 当我在没有gwt的情况下运行我的项目时,只需要hibernate – 一切正常,但是当我在gwt中插入代码时,会出现此exception。

PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 1054, SQLState: 42S22 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: Unknown column 'employee0_.jdoDetachedState' in 'field list' 

我这样做了

 List list = session.createQuery("FROM Employee").list(); 

我的查询看起来像:

  Hibernate: select employee0_.id as id1_1_, employee0_.born as born2_1_, employee0_.department as departme3_1_, employee0_.first_name as first_na4_1_, employee0_.jdoDetachedState as jdoDetac5_1_, employee0_.post as post8_1_, employee0_.salary as salary6_1_, employee0_.second_name as second_n7_1_ from employee employee0_ 

和我的class级一起看

 @Entity @Table(name="employee") public class Employee implements Serializable{ @Id public Integer id; @Column(nullable=false) public String first_name; @Column(nullable=false) public String second_name; @OneToOne @JoinColumn(name = "post") public Position post; @Column(nullable=false) public String born; @Column(nullable=false) public Integer salary; public String department; public Employee(){} ... public getters and setters } 

其他查询工作,但这不。 我发现https://stackoverflow.com/questions/16319853/unexpected-jdodetachedstate-column-when-using-hibernate-in-gwt-project但无法理解它是如何帮助的。

我遇到了同样的问题,我在这个网站上找到了添加这些行的解决方案:

 @Transient protected Object[] jdoDetachedState; 

这对我有帮助。 也许,这会对任何人有所帮助。

这是因为您没有在Employee类中提到jdoDetachedState字段的映射, jdoDetachedStateEmployee类中添加jdoDetachedState字段的映射

 @Column(nullable=false) public String jdoDetachedState; 

还要确保您的表列名称与Entity类字段名称相同,否则使用@Column注释的name属性作为

 @Column(name = "column_name",nullable=false) public String fieldName; 

希望这能解决你的问题

现在不明白问题。 我有’ 部门 ‘表。 它工作正常,但是当我在表中添加一列时,它也开始失败并出现相同的exception:

 Unknown column 'department0_.jdoDetachedState' in 'field list' 

  @Column(nullable=false)public String jdoDetachedState; 

没有帮助

我找到了解决方案! 当我在mysql jdoDetachedState VARCHAR(11)列添加到我的表时,所有开始工作。

对于简单的谷歌应用程序引擎项目(NON-maven),您可以通过取消选中使用datanucleus JDO / JPA访问数据存储区来解决此问题

步 :

  1. 转到Google应用引擎插件选项。
  2. 点击“部署到App Engine”
  3. 单击应用程序引擎项目设置选项
  4. 取消选中“使用DataNucleus JDO / JPA访问数据存储区”选项

    1. 并部署或运行

    在此处输入图像描述

我找到了解决方案,我不知道正确的编程方式,但它解决了我的问题! 我改变了我的表,并将text列的jdoDetachedState列添加到mysql中的表中。 注意:不要在java文件中添加jdoDetachedState。