Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nhibernate hibernate-映射默认实体的模式?_Nhibernate_Hibernate - Fatal编程技术网

Nhibernate hibernate-映射默认实体的模式?

Nhibernate hibernate-映射默认实体的模式?,nhibernate,hibernate,Nhibernate,Hibernate,在Hibernate中映射默认数据库对象是否有一种简洁的方法 例如,在这个类中,一个Foo应该始终能够返回一个Bar,无论它是为Foo自定义的,还是来自存储在数据库某处的默认值。Foo的用户应该能够在其中设置自定义的Bar对象,但他们不需要对Bar的写访问权限-因此降低了可见性: public Class Foo { public Bar Bar { get { return CustomBar ?? DefaultBar; }

在Hibernate中映射默认数据库对象是否有一种简洁的方法

例如,在这个类中,一个Foo应该始终能够返回一个Bar,无论它是为Foo自定义的,还是来自存储在数据库某处的默认值。Foo的用户应该能够在其中设置自定义的Bar对象,但他们不需要对Bar的写访问权限-因此降低了可见性:

public Class Foo {
    public Bar Bar {
        get {
            return CustomBar ?? DefaultBar;
        }
    }

    public Bar CustomBar { get; set; }
    protected Bar DefaultBar { get; private set; }
}

我想知道的是如何休眠映射DefaultFoo属性。所有的Bar类都应该能够访问单个DefaultFoo对象。我知道如何在Hibernate中实现这一点的唯一方法是在Foo中使用一对多映射。(Foo包含一到多个酒吧)…这似乎有点麻烦,因为总是最多有一个酒吧。这种行为有更好的模式吗?TIA.

这也称为NullObject或DefaultObject模式。关于这一点,Hibernate邮件列表上有一些讨论。但我没有看到任何关于如何将其存储在数据库中的信息。如果您想要一个真正的NullObject,它位于数据库外部,那么您可以实现一个Singleton默认对象,实现ILifecycle接口(我认为),并否决OnSave事件以防止它被持久化