-2

我不知道为什么关系未在我的数据库中创建。我有一个表格中有7个关系,其中5个关系正常工作,但2(materialServico,unidadeMedida)不会出现在数据库中(查看CONSTRAINT REFERENCES)并且日志中没有任何内容出现。任何人都经历过这个?我在Spring 3.2.1.RELEASE和SqlServer 2012中使用eclipselink 2.5.1(也在postgresql中测试过)。通常,我使用Hibernate作为ORM ...EclipseLink - 未建立关系

@JoinColumns({ 
    @JoinColumn(name = "COD_EMPRESA", referencedColumnName = "COD_EMPRESA", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_FILIAL", referencedColumnName = "COD_FILIAL", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_CONTA_CONTABIL", referencedColumnName = "COD_CONTA_CONTABIL", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "DATA_CONTA_CONTABIL", referencedColumnName = "DATA_CONTA_CONTABIL", nullable = true, insertable=false, updatable=false)}) 
@ManyToOne(optional = false) 
private Conta conta = new Conta(); 

@JoinColumns({ 
    @JoinColumn(name = "COD_EMPRESA", referencedColumnName = "COD_EMPRESA", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_FILIAL", referencedColumnName = "COD_FILIAL", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_UNIDADE_MEDIDA", referencedColumnName = "COD_UNIDADE_MEDIDA", nullable = true, insertable=false, updatable=false)}) 
@ManyToOne(optional = false) 
private UnidadeMedida unidadeMedida = new UnidadeMedida(); 

@JoinColumns({ 
    @JoinColumn(name = "COD_EMPRESA", referencedColumnName = "COD_EMPRESA", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_FILIAL", referencedColumnName = "COD_FILIAL", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_NAT_OPERACAO", referencedColumnName = "COD_NAT_OPERACAO", nullable = true, insertable=false, updatable=false)}) 
@ManyToOne(optional = false) 
private NaturezaOperacao naturezaOperacao = new NaturezaOperacao(); 

@JoinColumns({ 
    @JoinColumn(name = "COD_EMPRESA", referencedColumnName = "COD_EMPRESA", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_FILIAL", referencedColumnName = "COD_FILIAL", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "CHAVE_NFE", referencedColumnName = "CHAVE_NFE", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "DATA_REF", referencedColumnName = "DATA_REF", nullable = true, insertable=false, updatable=false)}) 
@ManyToOne(optional = false) 
private MestreNotaFiscal mestreNotaFiscal = new MestreNotaFiscal(); 

@JoinColumns({ 
    @JoinColumn(name = "COD_EMPRESA", referencedColumnName = "COD_EMPRESA", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_FILIAL", referencedColumnName = "COD_FILIAL", nullable = true, insertable=false, updatable=false), 
    @JoinColumn(name = "COD_ITEM", referencedColumnName = "COD_ITEM", nullable = true, insertable=false, updatable=false)}) 
@ManyToOne(optional = true) 
private MaterialServico materialServico; 

的Sql日志:它创建为FK mestreNotaFiscal,孝顺,CONTA,naturezaOperacao,Empresa与我们。不要在日志中显示更多的FK。

ALTER TABLE SYS033_ITENS_NFS ADD CONSTRAINT SYS033ITENSNFSDATA_REF FOREIGN KEY (DATA_REF, CHAVE_NFE, COD_FILIAL, COD_EMPRESA) REFERENCES SYS032_MESTRE_NFS (DATA_REF, CHAVE_NFE, COD_FILIAL, COD_EMPRESA) 
ALTER TABLE SYS033_ITENS_NFS ADD CONSTRAINT SYS033ITENSNFSCDFILIAL FOREIGN KEY (COD_FILIAL, COD_EMPRESA) REFERENCES SYS001_FILIAIS (COD_FILIAL, COD_EMPRESA) 
ALTER TABLE SYS033_ITENS_NFS ADD CONSTRAINT SYS033TNSNFSCDCNTCNTBL FOREIGN KEY (COD_CONTA_CONTABIL, COD_FILIAL, DATA_CONTA_CONTABIL, COD_EMPRESA) REFERENCES SYS005_ (COD_CONTA_CONTABIL, COD_FILIAL, DATA_CONTA_CONTABIL, COD_EMPRESA) 
ALTER TABLE SYS033_ITENS_NFS ADD CONSTRAINT SYS033TNSNFSCDNTPRACAO FOREIGN KEY (COD_NAT_OPERACAO, COD_FILIAL, COD_EMPRESA) REFERENCES SYS031_NATUREZA_OPERACOES (COD_NAT_OPERACAO, COD_FILIAL, COD_EMPRESA) 
ALTER TABLE SYS033_ITENS_NFS ADD CONSTRAINT SYS033ITENSNFSCDMPRESA FOREIGN KEY (COD_EMPRESA) REFERENCES SYS000_EMPRESA (COD_EMPRESA) 
+0

为什么被否定 ????? –

+0

除了许多非常复杂的映射,你没有提供任何信息。你到底想要发生什么,以及究竟发生了什么?您也可以简化模型并删除一些关系以查看哪些与问题实际相关 - 创建一个简单的测试用例通常可帮助人们找出可能出错的地方。 – Chris

+0

你到底想要发生什么? \t为表格材料Servico和table unidadeMedida创建FK。 究竟发生了什么呢? \t正在为FK创建字段,但不为这两个表创建FK CONSTRAINT(引用)。 \t 我会尝试改为休眠,看看它是否是eclipselink问题。 –

回答

0

我将实现从eclipselink更改为hibernate(4.2.1.Final),它工作正常!我不知道为什么有这个问题,不知道如何在这种情况下使用eclipselink。