Java JSONMANAGED引用的问题
我试图在我的一个实体类中使用json管理引用。该实体类与另一个具有复合主键的实体具有多通关系 在A班我有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
/**
* @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个!