我在项目中使用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)
) ;
对于发生了什么的任何想法?