我的架构的简化版:
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
,如果可以,看到了吗? 最佳答案
您的映射是正确的恕我直言,并且可以将DataNucleus AccessPlatform作为JPA实现正常运行。也许休眠日志可以告诉您更多信息?
-安迪DataNucleus