gpt4 book ai didi

java - 如何使用 hibernate

转载 作者:行者123 更新时间:2023-11-29 09:09:14 27 4
gpt4 key购买 nike

我正在阅读 hibernate 引用资料,它们是 hibernate 中的两个元素:<join><any> .看了之后,不知道引用在讲什么。

不明白什么时候用join/any,它们适合什么样的场景?对于 :当设置“fetch”时,hibernate什么时候使用inner join,什么时候使用outer join,什么时候使用select?使用哪些表哪些列?对于提供的示例 hibernate 引用,它说: ,然后哪一列用于连接这两个表?

在为 设置fetch时,它说:fetch(可选 - 默认为 join):如果设置为 join,默认情况下,Hibernate 将使用内部连接来检索类定义的 (我的问题:有人能给我一个例子吗:这是这个类?)或其父类(super class)((我的问题:有人可以给我一个例子来说明:这是哪个类吗?))和由子类定义的 的外部连接((我的问题:有人可以给我举个例子:这是哪个类(class)?))。如果设置为 select,那么 Hibernate 将对子类上定义的 使用顺序选择((我的问题:有人能给我一个例子来说明:这是这个类吗?)),只有当一个行结果代表子类的一个实例((我的问题:有人能给我一个例子来说明:这是哪个类吗?))。内部联接仍将用于检索由该类及其父类(super class)定义的((我的问题:有人能给我一个例子来说明:这是哪个类吗?))。

换句话说,我想知道下面说的所有类是什么:fetch(可选 - 默认为 join):如果设置为 join,默认情况下,Hibernate 将使用内部连接来检索由类或其父类(super class)定义的 以及用于由子类定义的 的外部连接。如果设置为 select 那么 Hibernate 将对在子类上定义的 使用顺序选择,只有当一行结果代表子类的实例时才会发出。内部联接仍将用于检索由类及其父类(super class)定义的

对于 ,它适用于什么样的场景?能否解释一下它是如何工作的?有没有人提供示例并向我解释?谢谢。

最佳答案

  • <join>用于映射一个类两个 2+ 表,它们在主键/id 上具有一对一关联

    Table A        Table B
    ------- -------
    id | name a_id | status

    class Foo
    {
    private int id;
    private string name;
    private string status;
    }

    <class name="Foo">
    <id name="id"/>
    <property name="name"/>
    <join table="B">
    <key column="a_id"/>
    <property name="status"/>
    </join>
    </class>
  • <any>用于映射多态引用,例如联系人可以引用用户或其所属的公司。因此它使用两列:一列是公司/用户的 ID,另一列用于存储引用的类型,例如“用户”或“公司”。优点是它知道引用实体的类型(和表),而无需查看所有可能的表

    Table Users         Table Companies
    ---------- -------------
    id | name id | trademark

    Table Contacts
    -----------------------
    id | text | owner_id | owner_type

    class User/Company implements HasContacts
    {
    private int id;
    private string name/trademark;
    private Set<Contact> contacts;
    }

    class Contact
    {
    private int id;
    private string text;
    private HasContacts owner;
    }

    <class name="Contact">
    <id name="id"/>
    <property name="name"/>
    <any name="owner" id-type="System.Int64" meta-type="System.String">
    <meta-value value="user" class="User"/>
    <meta-value value="company" class="Company"/>
    <column name="owner_id"/>
    <column name="owner_type"/>
    </any>
    </class>

    <class name="User">
    <id name="id"/>
    <property name="name"/>
    <set name="contacts" where="owner_type='user'">
    <key column="owner_id"/>
    <one-to-many class="Contact"/>
    </set>
    </class>

    <class name="Company">
    <id name="id"/>
    <property name="trademark"/>
    <set name="contacts" where="owner_type='company'">
    <key column="owner_id"/>
    <one-to-many class="Contact"/>
    </set>
    </class>

关于java - 如何使用 hibernate <join><any>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243643/

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