java - hibernate/持久化和单例模式

标签 java hibernate singleton persistence

我有一个要保存在数据库中的单例。其他持久实体应该引用这个单例。如何用 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...

也许我的想法不对?也许这是错误的架构问题?您是否解决了类似问题?

最佳答案

我以此结束:

@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...
}

关于java - hibernate/持久化和单例模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12937775/

相关文章:

java - Hibernate - 难以理解的警告

ios - Swift:如何使用 dispatch_once 使 UITableViewCell 出队?

java - 通讯链路故障:Hibernate & Spring application

java - 无法访问 OAuth 2.0 访问 token

java - EJB Web服务,实体未映射错误

singleton - 如何在 Guice 上找到所有实现特定类型的单例?

java - 单例实现接口(interface)的优势

java - JVM/编译器会优化一个简单的 super 方法调用吗?

javamail 错误 : must issue starttls command first

java - 如何指定嵌入属性中的属性?