5

我有一个要保存在数据库中的单例。其他持久化实体应该引用这个单例。用 Hibernate 是如何实现的?

我以一些还没有工作的东西结束,伪造了单例的单个 ID:

@Entity
@Subselect("select '1' as ID")
class Singleton {
    @Id
    @Column(name="ID")
    private Long getId() { return 1l; }
    private void setId(Long id) { }
}

@Entity
@Table(name="ENT")
class MyEnt {
    // TODO: how to annotate so that table ENT doesn't need foreign key column 
   Singleton s;
}

问题是我不想在引用单例的实体中有一个带有外键的列 - 因为单例只是一个,我们不需要它的 ID ...

也许我想错了?也许这是错误的架构问题?你解决了类似的问题吗?

4

2 回答 2

1

我以这个结束:

@Entity
@Subselect("select '1' as ID, * from TABLE")
class Singleton {
    @Id
    @Column(name="ID")
    private Long getId() { return 1l; }
    private void setId(Long id) { }
    // ... other useful fields persisted in TABLE
}

@Entity
@Table(name="ENT")
class MyEnt implements Lifecycle {
   Singleton s;
   void onLoad(Session sess, Serializable id) {
      this.s = sess.get(Singleton.class, 1l);
   }
   // etc...
}
于 2012-10-22T22:48:45.563 回答
0

如果Singleton只有一个对象,为什么要将它映射到其他实体中?

您可能想加载Singleton一次并将其放入application context. 在这种情况下,您可以在需要时重复使用它。

于 2012-10-17T15:30:30.243 回答