有关hibernate映射问题的帮助...请带领! :)

时间:2009-05-09 23:39:48

标签: hibernate inheritance mapping

好的,所以我已经撕下了我所拥有的东西而正在重建它,这就是我需要做的事情。

我有一个名为Property with的实体:

字符串名称;

@ManyToOne EntityType类型;

???????值

我也需要存储一个Value,但是根据Type,值可以是String,Double,也可以是指向另一个对象的链接(Class type.getJavaClass())。

我试图通过各种方式继承这样做,但仍然需要能够执行新的Property()并将值设置为null,直到选择Type时,选择适当类型的Type。 / p>

最优秀的是将Value设为Object类型(这样我可以放置String,Double或type.getJavaClass(),但hibernate不会让我这样做。:(

任何关于实现这一目标的好方法的想法或建议都将受到赞赏! 谢谢, 约书亚

1 个答案:

答案 0 :(得分:0)

问题是Hibernate需要能够将它映射到数据库,因此一种Object不能真正起作用。

我建议你创建String类型的值。然后包装“get”和“set”调用,以便结束调用者不知道。例如:

public class Property
{

String name;

Enum Type;
String valueString;




public object getValue()
{
    if( getType() == Long )
    {

    return Long.valueOf( getStringValue() );
    }

    if( getType() == String )
    {
        return valueString;
    }

    .....

}

public void setValue( obj )
{
    if( obj instanceof Long )
    {
    setStringValue( obj.toString() )
        setType( Long ) 
    }
    ....

}

}

至于另一个对象的链接,是指你指向另一个表的链接?在这种情况下,我可能会为每个表创建一个单独的列,以便您可以让数据库保持参照完整性。然后你可以只增强getValue(),setValue()来获得合适的实体。