当前位置: 首页 > 面试题库 >

Hibernate ManyToOne与OneToOne

海叶秋
2023-03-14
问题内容

我看不到“多对一”关系与“一对一”关系的架构有什么区别:

@Entity
public class Order {

    @ManyToOne
    @JoinColumn(nullable = false)
    private Address address;

@Entity
public class Order {

    @OneToOne
    @JoinColumn(nullable = false)
    private Address address;

有什么区别吗?


问题答案:

它们在架构上看起来完全相同,但是在Hibernate Layer上有所不同。

如果尝试这样的操作:

Address address = new Address();
Order order1 = new Order();
order1.setAddress(address);
Order order2 = new Order();
order2.setAddress(address);
save();

一切都会好起来的。但是,保存后,如果您尝试获取订单:

@OneToOne case:
org.hibernate.HibernateException: More than one row with the given identifier was found: 1

@ManyToOne case:
SUCCESS

当然,在两种情况下,您的Address类应该看起来有所不同。



 类似资料:
  • 在C语言中,假设每个算法被赋予完全相同的一组进程,那么先到先得、最短作业优先和循环之间的周转时间是否相等?还是调度算法不同?

  • 问题内容: 为了为 HTML5 Doctype 定义字符集,我应该使用哪种表示法? 短: 长: 问题答案: 在HTML5中,它们是等效的。使用较短的一个,更容易记住和键入。浏览器支持很好,因为它是为向后兼容而设计的。

  • 连接的多个输入都相当于Yes的时候才会输出Yes。 用法 Your browser does not support the video tag. 案例:小闹钟 功能:今天15:10:00,响起猫叫声小闹钟 工作原理 当所有的输入都是Yes的时候,与节点才输出Yes。

  • 问题内容: 似乎有三种 相同的 方法可以独立于平台获取依赖于平台的“文件分隔符”: 我们如何决定何时使用哪个? 它们之间甚至有什么区别吗? 问题答案: 可以通过调用命令行参数或使用命令行参数覆盖 获取默认文件系统的分隔符。 获取默认文件系统。 获取文件系统的分隔符。请注意,作为一种实例方法,在需要代码在一个JVM中对多个文件系统进行操作的情况下,可以使用该方法将不同的文件系统传递给代码(而不是默认

  • 我有以下三个实体: 人 客户端具有个人id外键和区域id外键。一个人可以有很多客户,每个客户都属于一个地区。我正在尝试使用Laravel中的单个查询获取一个人的客户列表以及每个客户的区域。我曾经亲自与客户建立过很多关系,这很好。我正在尝试使用hasManyThrough方法来查询一个人,并获取他的客户和他们所在的地区,但我无法让它工作!我的关系设置为: 人有很多客户 客户属于区域 人已通过(客户,