Hibernate @与collectionTable一起使用时,将忽略JoinColumn referencedColumnName指定的值

Hibernate @与collectionTable一起使用时,将忽略JoinColumn referencedColumnName指定的值,hibernate,jpa,Hibernate,Jpa,我有下面提到的配置,这里我希望集合表joincolumn(foriegn键)应该指向primarykey子类 配置: @DependencySubclasses({LookupTypeOne.class, LookupTypeTwo.class}) @CodeReview(status = ReviewStatus.PENDING, reviewer = "") @Entity @Table(name = "LOOKUP_TABLE") @Inheritance(strategy = Inher

我有下面提到的配置,这里我希望集合表joincolumn(foriegn键)应该指向primarykey子类

配置:

@DependencySubclasses({LookupTypeOne.class, LookupTypeTwo.class})
@CodeReview(status = ReviewStatus.PENDING, reviewer = "")
@Entity
@Table(name = "LOOKUP_TABLE")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class AbstractLookup {

@GsonExclude
@Id
@GeneratedValue(generator = UID_GENERATOR)
@Column(name = "LOOKUP_ID")
protected Long lookupId;
//.......
}

@CodeReview(status = CodeReview.ReviewStatus.PENDING, reviewer = "")
@Entity
@Table(name = LOOKUP_CURVE_TABLE)
@PrimaryKeyJoinColumn(name = "LOOKUP_CURVE_ID")
public class LookupTypeOne extends AbstractLookup {

@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "COLLECTION_TABLE", joinColumns =   @JoinColumn(name = "CT_LT_ID", referencedColumnName = "LOOKUP_CURVE_ID", nullable = false))
private List<ParameterTableColumn> varyByParameterItems = Lists.newArrayList();

//...........

}

@Embeddable
public class ParameterTableColumn {
@Dependency(DEFINITION)
private Long columnObjectId;
//.......
}
@dependencySublases({LookupTypeOne.class,LookupTypeTwo.class})
@CodeReview(状态=ReviewStatus.PENDING,reviewer=”“)
@实体
@表(name=“LOOKUP\u Table”)
@继承(策略=InheritanceType.JOINED)
公共抽象类抽象查找{
@GsonExclude
@身份证
@GeneratedValue(生成器=UID\U生成器)
@列(name=“LOOKUP\u ID”)
受保护的长查找ID;
//.......
}
@CodeReview(状态=CodeReview.ReviewStatus.PENDING,reviewer=”“)
@实体
@表格(名称=查找曲线表格)
@PrimaryKeyJoinColumn(name=“LOOKUP\u CURVE\u ID”)
公共类LookupTypeOne扩展了AbstractLookup{
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name=“COLLECTION\u TABLE”,joinColumns=@JoinColumn(name=“CT\u LT\u ID”,referencedColumnName=“LOOKUP\u CURVE\u ID”,nullable=false))
私有列表varyByParameterItems=Lists.newArrayList();
//...........
}
@可嵌入
公共类参数TableColumn{
@依赖关系(定义)
私有长列对象;
//.......
}
因此,在集合表joinColumn(外键)的LookupTypeOne实现中,我想引用“Lookup\u CURVE\u ID”,即LookupTypeOne的主键,它应该作为referencedColumnName=“Lookup\u CURVE\u ID”来工作,但它仍然引用AbstractLookup的ID,即“Lookup\u ID”

从配置来看,我认为这应该可以工作,但它不能正常工作。如果有人能指出哪里出了问题,涉及到什么,使其引用“查找曲线ID”,这将是非常有帮助的


所以这里的问题是,为什么referencedColumnName=“LOOKUP\u CURVE\u ID”没有产生任何影响,似乎被忽略了?

它工作不正常:请详细说明。什么不起作用?它怎么不起作用?您执行什么代码,您期望它做什么,以及它到底做什么?基于上述配置,预期的是在集合表联接列(CT_LT_ID)中,它应该引用LOOKUP_CURVE_ID,但实际它引用LOOKUP_ID,而代码exceute只是合并(entityManager.merge)LookupTypeOne实体中包含列表。如果问题/上下文仍然不清楚,请告诉我。LOOKUP\u CURVE\u ID是LOOKUP\u ID的外键,那么区别是什么?它们具有相同的价值。