我的架构的简化版本:
utility_company
id int not null -- PK
name varchar(255) not null
utility_settings
utility_id -- FK to utility
use_magic tinyint(1) not null default 0
这两个表之间存在一对一的映射。抛开这种设计的适用性,我想将这两个表中的数据映射到一个对象。在Hibernate / JPA中,据称这样做如下:
@Entity
@Table(name = "utility_company")
@SecondaryTables({
@SecondaryTable(
name = "utility_settings",
pkJoinColumns = {
@PrimaryKeyJoinColumn(
name="utility_id", referencedColumnName="id")
})
})
public class UtilityCompany extends AbstractEntity {
等等。
每个@Column
都包含相应的表名。
部署时,我收到此错误:
Cannot find the expected secondary table:
no utility_company available for poscore.model.UtilityCompany
utility_company
表肯定存在(以前的版本只将UtilityCompany
映射到utility_company
表;我正在添加utility_settings
。
发现很多论坛帖子都有这个确切的问题,没有答案。我还尝试了各种所谓的法律形式,指明所有@SecondaryTable
具有相同的效果。
任何人都成功使用@SecondaryTable
,如果有,请看这个?
答案 0 :(得分:1)
你的映射是正确的恕我直言,并在DataNucleus AccessPlatform作为JPA实现正常运行。也许Hibernates日志会告诉你更多?
- 安迪DataNucleus
答案 1 :(得分:1)
“每个@Column都包含适当的表名。”
尝试删除第一个表名列的显式表名,仅为辅助表列指定它。为我做了诀窍。