A类具有使用Embeddable创建的复合主键。在B类中,我从ManyToOne关系引用了A类。但是,B类只有A类复合主键的一列。对于另一个值,我希望它是一个默认值。
这可能吗?
我尝试过使用多个连接列,但这不起作用,因为第二列不存在于表中的任何位置。我也认为可能有一个使用Transient的解决方案,但我不确定它是如何工作的。
答案 0 :(得分:2)
如果A具有复合主键,则需要两个部分来唯一标识As。因此,您的数据库确实具有来自B-> A的OneToMany,您希望实体仅基于设定值引用特定对象。我认为这不是一个好主意,因为它会使实体重用变得困难,并且插入和操作As和Bs非常复杂,而且JPA不允许这样做。使用单个唯一标识符(如序列)通常更可取。
Hibernate和其他提供程序允许在引用中使用部分键。您需要在关系中添加一个Hibernate过滤器,以便根据未映射的字段仅提取1 B:http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/filters.html