Java JSONMANAGED引用的问题

Java JSONMANAGED引用的问题,java,spring,oracle,jpa,Java,Spring,Oracle,Jpa,我试图在我的一个实体类中使用json管理引用。该实体类与另一个具有复合主键的实体具有多通关系 在A班我有 /** * @return the classB */ @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "SEC_ID", referencedColumnName = "PT_ID", updatable = false, insertable = false) @JsonBackRe

我试图在我的一个实体类中使用json管理引用。该实体类与另一个具有复合主键的实体具有多通关系

在A班我有

 /**
     * @return the classB
     */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "SEC_ID", referencedColumnName = "PT_ID", updatable = false, insertable = false)
    @JsonBackReference
    public classB getClassB() {
        return classB;
    }
B类

/**
 * @return the pxxId
 */
@EmbeddedId
public PxxId getPxxId() {
    return pxxId;
}
嵌入式Id

@Embeddable
public class PxxId implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 7080557675086058087L;
    private Long taId;
    private Long maId;

    /**
     * @return the id
     */
    @Column(name = "PT_ID", nullable = false, length = 20)
    public Long getTaId() {
        return tabId;
    }

    /**
     * @param id
     *            the id to set
     */
    public void setTaId(Long id) {
        this.taId = id;
    }

    /**
     * @return the maId
     */
    @Column(name = "MA_ID", length = 20, nullable = false)
    public Long getMaId() {
        return maId;
    }

    /**
     * @param mId
     *            the maId to set
     */
    public void setMaId(Long maId) {
        this.maId = maId;
    }
}
我尝试了上面的方法,但出现了如下错误

... 41 more
Caused by: org.hibernate.AnnotationException: referencedColumnNames(PT_ID) of com.citi.aml.npa.domain.ClassA.classB referencing com.citi.aml.npa.domain.ClassB not mapped to a single property
    at org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:336)
    at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:116)
    at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1557)
    at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1478)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1386)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1781)
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
    ... 48 more  
。。。41多
原因:org.hibernate.AnnotationException:com.citi.aml.npa.domain.ClassA.classB引用com.citi.aml.npa.domain.classB的referencedColumnNames(PT_ID)未映射到单个属性
位于org.hibernate.cfg.BinderHelper.createSyntheticPropertyReference(BinderHelper.java:336)
位于org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:116)
在org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1557)上
位于org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1478)
位于org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1386)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1781)
位于org.hibernate.ejb.EntityManagerFactoryImpl。(EntityManagerFactoryImpl.java:96)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
... 48多

有人能帮帮我吗。

PT\u ID
列中添加
@EmbeddedId
。为什么会这样呢PT\u ID本身不是一个EmbeddedId。B的键是PxxId,所以您还必须在manytone中引用这两列mapping@SimonMartinelli在classA中,我只有classB的两个嵌入id列中的一列。这一要求就像JSON注释是与问题有关的bug(因此,请从您的问题中排除干扰-JSON是一个完全独立的过程,这是Hibernate JPA反对映射),您的JPA映射就是问题所在。如果
ClassA
ClassB
相关,并且
ClassB
有两个主键字段(列),则跨越
ClassB
的FK有两列。它不可能有1个!