gpt4 book ai didi

Hibernate 4 显式多态性(注释)不起作用?

转载 作者:行者123 更新时间:2023-12-02 22:28:07 24 4
gpt4 key购买 nike

我面临着 hibernate 显式多态性的问题。我使用了多态性注释并将其设置为显式,但是通过映射类中的 get() 和集合,我总是可以获得所有子类。我在 hibernate“show_sql”输出中看到所有带有左连接的子类。有什么问题?我对文档的理解有误吗?或者是 hibernate 4 中的一个错误?我还没有看到任何使用 hibernate 4 和多态性注释的示例。

sessionFactory.getCurrentSession().get(Node.class, 111); // return subclasses!


@Entity
@Table(name="Nodes")
@Inheritance(strategy = InheritanceType.JOINED)
@Polymorphism(type= PolymorphismType.EXPLICIT)
public class Node implements Serializable {
...
}



@Entity
@Table(name="Persons")
public class Person extends Node {
}


@Entity
@Table(name="Networks")
public class Network extends Node {
}

...and other subclasses...

最佳答案

这是一个常见的误解,我也曾经有过同样的疑问..

这就是显式多态性中真正发生的情况。

polymorphism explicit only applies on root entities and prevent queries naming a (unmapped) superclass to return mapped sub entities

在您的情况下,如果实体类节点未映射并且人员已映射 具有显式的多态性,那么节点将不会返回人员 元素。

看看这段代码..

@Entity
@Table(name="Nodes")
@Inheritance(strategy = InheritanceType.JOINED)
public class Node implements Serializable {
...
}



@Entity
@Polymorphism(type= PolymorphismType.EXPLICIT)
@Table(name="Persons")
public class Person extends Node {
}


@Entity
@Polymorphism(type= PolymorphismType.EXPLICIT)
@Table(name="Networks")
public class Network extends Node {
}

这基本上与每个人的想法相反。!!

关于Hibernate 4 显式多态性(注释)不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com