我的架构的简化版:

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

10-02 11:31