当前位置: 首页 > 知识库问答 >
问题:

Hbernate:unideirection@oneToone具有级联启用

滑畅
2023-03-14

我在航班(父)和航空公司(子)之间有一个单向的一对一映射,下面是我的代码-

public class Airline {
..
    @OneToOne(cascade=CascadeType.ALL)
    Flight flight;
}

航班没有任何航空公司的引用,这有id,命名他们的getter和setter。

    Flight flight= new Flight();
    flight.setName("flight2");

    Airline airline= new Airline();
    airline.setName("Air India");
    airline.setFlight(flight);

    Session session=sessionFactory.openSession();
    session.saveOrUpdate(airline);
    session.saveOrUpdate(flight);
public class Airline {
        @JoinColumn("flight_ref_id")
        @OneToOne(cascade=CascadeType.ALL)
        Flight flight;
    }


public class Flight {
        @OneToOne(cascade=CascadeType.ALL)
        Airline airline;
    }
    airline.setFlight(flight);
    flight.setAirLine(airline)
    Session session=sessionFactory.openSession();
    session.saveOrUpdate(airline);
mysql> select * from Airline;
+----+-----------+---------------+
| id | name      | flight_ref_id |
+----+-----------+---------------+
|  1 | Air India |          NULL |
+----+-----------+---------------+
1 row in set (0.00 sec)

mysql> select * from Flight;
+----+--------+------------+
| id | name   | airline_id |
+----+--------+------------+
|  1 | Del-NJ |          1 |
+----+--------+------------+

在dbflight_ref_id是null。为什么?

共有1个答案

谢典
2023-03-14

您需要添加@JoinColumn注释以添加多个用作飞行外键的列

public class Airline {
..
    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumn(name = "flights_id", nullable = false)
    Flight flight;
}
 类似资料:
  • 控制器: 存储库: 序列:

  • 问题内容: 这就是我想要做的。 创建具有与孩子的OneToOne关系的父母 父母必须使用延迟加载来获取孩子 如果父母被删除,孩子也被删除 如果孩子被移走,父母不应该受到影响 级联更新和删除必须转换为DDL 班级家长 班级儿童 我的第1、3、4 点 完全正常工作,而 第5点则 部分正常工作,仍然需要解决如何翻译更新部分indo DDL。 第2点 是这里的大问题,对于我目前的解决方案,父级不会延迟加载

  • 我定义了具有@OneToOne双向关系的实体。 关系的所有者站点(子类): 其他站点(父类): 当我试图坚持有子集的父母(不坚持),然后我得到了例外 TransientPropertyValueException:对象引用未保存的临时实例-在刷新之前保存临时实例 这看起来可以理解。 但当我定义具有双向一对一/多对一关联的实体时,如: 此关系的所有者站点: 关系的另一面: 并尝试持久化具有子集合集(

  • 问题内容: 是否有一个库(首选C#)来解决我称为多级层叠JSON的问题? 这是我的意思的示例: (Pseudocode / C#) 结果 (行为与CSS相同) 编辑1-更复杂的示例 编辑2 在对需求进行了更多思考之后,我看到了更复杂的示例永远无法按原样工作。例如,级联功能将无法知道某个电话号码是否已被修改,或者它是否是新的。为了使其工作,每个子实体都应具有唯一的标识符。 问题答案: 使用出色的JS

  • 问题内容: 我是SQL新手,遇到了一个奇怪的问题。所以我有两个表OFFERS和SUPPLIER。这是供应商表。 这是OFFERS表。 所以现在,当我尝试像这样向offers表添加外键约束时 我收到一条错误消息:“ ORA-01735:无效的ALTER TABLE选项”。如果我删除最后一行,即“ ON UPDATE CASCADE”,则可以正常工作。那么,我在做什么错呢?我在互联网上看到了很多类似的

  • 映射器支持可配置的概念 cascade 行为对 relationship() 构造。这是指相对于特定对象在“父”对象上执行的操作 Session 应传播到该关系引用的项(例如“子”对象),并受 relationship.cascade 选择权。 层叠的默认行为仅限于所谓的层叠 保存更新 和 合并 设置。级联的典型“可选”设置是添加 删除 和 删除孤儿 选项;这些设置适用于相关对象,这些对象仅在附加