在Hibernate中使用@SecondaryTable的问题

时间:2009-04-02 14:40:08

标签: java hibernate jpa

我的架构的简化版本:

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,如果有,请看这个?

2 个答案:

答案 0 :(得分:1)

你的映射是正确的恕我直言,并在DataNucleus AccessPlatform作为JPA实现正常运行。也许Hibernates日志会告诉你更多?

- 安迪DataNucleus

答案 1 :(得分:1)

“每个@Column都包含适当的表名。”

尝试删除第一个表名列的显式表名,仅为辅助表列指定它。为我做了诀窍。

相关问题