Java 多个一个多个联接列,一个为默认值

Java 多个一个多个联接列,一个为默认值,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,类有一个复合主键,它是使用可嵌入的。在B类中,我从多个关系中引用A类。但是,类B只有来自类A的复合主键的一列。对于另一个值,我希望它是默认值 这可能吗 我尝试过使用多个联接列,但这不起作用,因为第二列在表中的任何位置都不存在。我还认为可能有一种解决方案使用了Transient,但我不确定它是如何工作的。如果a有一个复合主键,那么这两个部分都需要唯一地标识为。因此,您的数据库实际上有一个来自B->a的OneToMany,您希望该实体仅基于设置值引用特定对象。我认为这不是一个好主意,因为它会使实体重

类有一个复合主键,它是使用可嵌入的。在B类中,我从多个关系中引用A类。但是,类B只有来自类A的复合主键的一列。对于另一个值,我希望它是默认值

这可能吗


我尝试过使用多个联接列,但这不起作用,因为第二列在表中的任何位置都不存在。我还认为可能有一种解决方案使用了Transient,但我不确定它是如何工作的。

如果a有一个复合主键,那么这两个部分都需要唯一地标识为。因此,您的数据库实际上有一个来自B->a的OneToMany,您希望该实体仅基于设置值引用特定对象。我认为这不是一个好主意,因为它会使实体重用变得困难,插入和操作as和Bs极其复杂,JPA不允许这样做。通常最好使用单一的唯一标识符(如序列)

Hibernate和其他提供程序允许在引用中使用部分键。您需要向关系中添加一个Hibernate筛选器,以使其根据未映射字段仅拉出1 B: