在Hibernate文档中,有这样一句话:
Hibernate中一对多关联的默认语义与父/子关系的常用语义相比,与复合元素映射的语义要差得多。
我发现这句话很混乱,有人能解释一下它的意思吗?此外,在Best Pratices页面上,您会发现
编写细粒度的类并使用映射它们
我不知道如何理解这些。映射是否使用
案例1:Hibernate中一对多关联的默认语义与父/子关系的常用语义相比,与复合元素映射的语义要差得多。指:-
假设您有两个名为A
案例2:编写细粒度类并使用
Hibernate中的单词组件是指另一个对象中包含的对象
例如:您有一个
Person
对象,其中包含各种字段,即id、firstName、lastName、address、age等。
然后您可以在数据库中创建一个表,如下所示:
drop table if exists Person
create table Person(
id int,
firstName varchar(50),
lastName varchar(50),
street varchar(50),
state varchar(50),
zipcode int(8),
age int(3)
);
现在,您需要创建两个pojo类,即,
Person
public class Person {
private int id;
private String firstName;
private String lastName;
private int age;
private Address address;
//getter/setter
}
public class Address {
private String street;
private String state;
private int zipCode;
//getter/setter
}
要在这个场景中引入合成,可以使用
如果为Person类创建XML文件,则可能如下所示:
<hibernate-mapping>
<class name="Person" table="Person">
<id name="id" type="int" column="id">
<generator class="native"/>
</id>
<component name="address" class="Address">
<property name="street" column="street" type="String"/>
<property name="state" column="state" type="String"/>
<property name="zipcode" column="zipcode" type="int"/>
</component>
<property name="firstName" column="firstName" type="String"/>
<property name="lastName" column="lastName" type="String"/>
<property name="age" column="age" type="int"/>
</class>
</hibernate-mapping>
另一方面,使用@Embedded
public class Person {
@Id
@GeneratedValue
private int id;
private String firstName;
private String lastName;
private int age;
@Embedded
private Address address;
//getter/setter
}
@Embeddable
public class Address {
private String street;
private String state;
private int zipCode;
//getter/setter
}
@Embedded注释用于指定;地址实体应作为一个组件存储在Person表中。
@可嵌入注释用于指定;Address类将用作组件。Address类不能有自己的主键,它使用封闭类主键。
在数据库中持久化Person:在数据库上执行插入操作时。首先需要创建Address类的对象
Address address = new Address("ABC Road", "MH", "440022");
Person person = new Person("A", "Z", 10, address);
session.save(person);
要检查Person表中的数据,您可以点击以下查询:-
mysql> select id, firstName, lastName, street, state from Person;
---------------------------------------------------
| id | firstName | lastName | street | state |
---------------------------------------------------
| 1 | A | Z | ABC Road | MH |
| 2 | B | Y | XYZ Road | MP |
---------------------------------------------------
2 rows in set (0.00 sec)
mysql>
编辑:案例1与案例2(关联与组合):
案例1代表关联,案例2代表组合。关联意味着表示两个不同实体之间的关系,例如一对一、一对多、多对一、多对多。另一方面,组合通常被称为两个实体之间的关系,其中一个实体是另一个实体的一部分,如果包含的实体不存在容器实体就无法存在。
更多解释:关联、聚合和合成
我希望这对你有帮助。
问题内容: 我正在为我们运行概念验证,以便对ES中更多“标准化”的数据运行嵌套查询。 例如带有嵌套 客户->-名称 -电子邮件-事件->-创建-类型 现在,我可以将给定客户的事件列表移至另一位客户。例如,客户A有50个事件客户B有5000个事件 我现在想将所有事件从客户A移动到客户B 拥有数百万客户的规模,并且在UI中针对图形进行查询,Parent / Child更适合还是应该能够嵌套处理? 在我
我有一个场景,需要在一种情况下加载所有子值,在另一种情况下加载一些特定的子值。我对这两种情况都使用一个bean,并使用命名查询编写查询。 现在在我的查询2中,我只需要加载字符串A,而不需要加载字符串B和字符串C。我试过使用 但得到以下错误 那么,关于如何继续这方面的任何建议。。
使用JPA(Hibernate)我试图实现以下关系,并想知道其他人是否对最佳方法有任何建议: 基本上是完全不相关的对象,每个对象都有一个公共子对象的集合;在对象模型中实现简单,在数据库中稍微麻烦些! 我确信这一定是常见的事情,但是我很难找到任何示例实现,因为我真的不知道正确的搜索词。 谢谢你的时间!
为了查询子集合和父文档,我对firest的文档及其最佳实践有一些问题。我试图使用Typecript在我的Firebase函数中进行查询。 DB: ├── 用户(集合) │ └── 用户(ID为的文档) │ │ └── 计划(子集合) 我有一个数组中的用户ID列表,我需要从用户文档和当前文档的子集合计划中收集信息。 但是如何从用户文档和子集合(计划)文档(当前)中获取数据,我不知道在场景中最有效的查
问题内容: 我想使用Elasticsearch.Net/NEST搜索相关文档。例如,我有: 我想分别存储“个人”和“地址”文档,并根据“地址”字段查询返回“个人”文档的位置。例如,返回居住在波士顿的人的所有文件。我已经在Elaticsearch文档中看到了一些使用映射和父/子指令的示例,但对于Elasticsearch.Net/NEST没有看到任何示例。任何代码示例或指针将不胜感激… 问题答案:
我对Java语言中的类型化有一个误解。问题是ClassCastException。例如,在这段代码中,假设动物是Dog类的父类,