hibernate(和jdk8)在表中找不到列...但是找到了jdk7

时间:2016-01-08 10:44:12

标签: hibernate tomcat intellij-idea jrebel

我在项目中使用Hibernate和Oracle数据库。

我有一个名为RefertoDO的对象,引用了另一个表:

@Entity
@Table(name = "REFERTO")
public class RefertoDO implements Serializable {
... 
  @JoinColumn(name = "NUM_PROG_ID")
  @ManyToOne(fetch = FetchType.LAZY)
  private AnagraficaDO anagrafica;
...
}

EDIT3 :这是另一张表

 @Entity
 @Table(name = "ANAGRAFICA")
 @Indexed
 public class AnagraficaDO implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "NUM_PROG_ID")
    @Fields({ @Field(index = Index.YES, store = Store.YES) })
    private Long numProgId; 

    ... 
    }

当我在 IntelliJ 15.2中使用Tomcat 8启动项目时(但即使使用v14我遇到了问题)我收到此错误:

Caused by: org.hibernate.MappingException: Unable to find column with logical name num_prog_id in table REFERTO

这只发生在IntelliJ;如果我切换到Eclipse,或者我从一个独立的tomcat运行项目(生成WAR),一切都很好。

我也在使用JRebel,但我做了很多禁用它的测试,所以我不相信太多参与。

显然num_prog_id位于表格REFERTO和表格ANAGRAFICA中。

编辑:一位同事告诉我,这个问题只发生在java8上。如果我切换到java7,问题就会消失。我已经更新了问题的标题和正文。

EDIT2 :这是Referto的DDL。

CREATE TABLE "REFERTO" 
   (    "ANNO_REFERTO" NUMBER(4,0), 
    "NUMERO_REFERTO" NUMBER(9,0), 
    "TIPO_REFERTO" VARCHAR2(8 BYTE), 
    "DATA_RICHIESTA" DATE, 
    "ANNO_DONAZIONE" NUMBER(4,0), 
    "NUMERO_UNITA" NUMBER(9,0), 
    "CODICE_PRODOTTO" VARCHAR2(8 BYTE), 
    "NUM_PROG_DON" NUMBER(6,0), 
    "NUM_PROG_PAZ" NUMBER(6,0), 
    "NUM_ESAMI_PREN" NUMBER(3,0), 
    "NUM_ESAMI_EFFET" NUMBER(3,0), 
    "CODICE_PATOLOGIA" VARCHAR2(8 BYTE), 
    "CODICE_TESTO" VARCHAR2(8 BYTE), 
    "REFERTO_STAMPATO" VARCHAR2(1 BYTE), 
    "SCARICATO_CONCERTO" VARCHAR2(1 BYTE), 
    "CATEGORIA_CONTATTO" VARCHAR2(8 BYTE), 
    "CUO" VARCHAR2(5 BYTE), 
    "VALIDITA" VARCHAR2(1 BYTE), 
    "OPER_VALIDITA" VARCHAR2(20 BYTE), 
    "DATA_VALIDITA" DATE, 
    "CUO_PROV" VARCHAR2(5 BYTE), 
    "ANNO_DONAZIONE_PROV" NUMBER(4,0), 
    "NUMERO_UNITA_PROV" NUMBER(9,0), 
    "REFERTO_SCARICATO" VARCHAR2(1 BYTE), 
    "STRID_DOCUMENTO_ESTERNO" VARCHAR2(30 BYTE), 
    "FLAG_CDA2" VARCHAR2(1 BYTE), 
    "ID_PRESIDIO" VARCHAR2(8 BYTE), 
    "CDA2_CONFIDENTIALITY_CODE" VARCHAR2(2 BYTE) DEFAULT '01', 
    "NUM_PROG_ID" NUMBER(16,0), 
    "NUM_PROG_ID_ALS" NUMBER(16,0), 
    "STORICIZZATO" NUMBER(1,0), 
    "ESAMI_STORICIZZATI" NUMBER(1,0)
    ) ;

对于发生了什么的任何想法?

0 个答案:

没有答案