Hibernate 在外键字段中插入空值

2024-01-06

我有 2 个简单的域对象,如下所示......使用 MYSQL DB。

@Entity
@Table(name="Product")
public class Product {
    @Id
    @Column(name="productId")
    @GeneratedValue
    protected int productId;
    @Column(name="Product_Name")
    protected String name;
    @OneToMany(cascade = javax.persistence.CascadeType.ALL,mappedBy="product")
    protected List<ProductOption> productoption = new ArrayList<ProductOption>();

和第二个对象

@Entity
@Table(name="ProductOption")
public class ProductOption{


    /**
     * 
     */

    @Id
    @Column(name="product_option_id")
    @GeneratedValue
    protected int productOptionId;


    //@JoinColumn(name="productId")
    @ManyToOne()
    protected Product product;      

    @Column(name="ProductTopping")
    private String topping;

和我的主要方法。

public class Createschema {

    public static void main(String[] args) {

        Product product = new Product();
        product.setName("Coffee");

        ProductOption po2 = new ProductOption();
        po2.setTopping("barbeque");
        ProductOption po = new ProductOption();
        po.setTopping("whipcream");
        ProductOption po1 = new ProductOption();
        po1.setTopping("honeymustard");


        List<ProductOption> productoptions = new ArrayList<ProductOption>();

        productoptions.add(po1);
        productoptions.add(po2);
        productoptions.add(po);



        System.out.println("schema!");
        Configuration configuration = new Configuration().configure();

        StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());

        SessionFactory factory = configuration.buildSessionFactory(builder.build());

        Session session = factory.openSession();
        session.beginTransaction();
        product.setProductoption(productoptions);
        session.save(product);
        session.getTransaction().commit();
        session.close();
        System.out.println(product.getName());

        for(int i=0;i<product.getProductoption().size();i++){
        System.out.println(product.getProductOptionsAsListOfStrings().get(i));  
        System.out.println(product.getProductoption().get(i).getTopping());
        }

    }

}

由于某种原因,hibernate 在productoptions 的外键字段中插入空值。 我尝试改变层叠样式、生成策略,但没有任何效果。设置 nullable=false 会引发 error 。数据已插入,但在 ProductOptions 表中,外键字段为空。 请帮忙


In Product change

@OneToMany(mappedBy="product")
List<ProductOption> productoption;

In ProductOption change

@ManyToOne
@JoinColumn(name="productId")
private Product product;

最后在Createschema

session.beginTransaction();

Product product = new Product();
product.setName("Coffee");
session.save(product);

ProductOption po2 = new ProductOption();
po2.setTopping("barbeque");
po2.setProduct(product)
ProductOption po = new ProductOption();
po.setTopping("whipcream");
po2.setProduct(product)
ProductOption po1 = new ProductOption();
po1.setTopping("honeymustard");
po2.setProduct(product)

session.save(po2);
session.save(po);
session.save(po1);

session.getTransaction().commit();
session.close();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 在外键字段中插入空值 的相关文章

随机推荐

  • 在 Windows 上的 Excel VBA 中,对于解析的 JSON 变量,这个 JScriptTypeInfo 到底是什么?

    在这里回答我自己的问题 我已经在 Excel VBA 中使用 JSON 做了一些工作 并发布了很多发现 我将以问答的形式进行https stackoverflow com help self answer https stackoverfl
  • memcached 客户端:打开、关闭和重用连接

    我一直在测试spymemcached 和xmemcached 客户端 我一直在尝试在项目文档中寻找答案 但效果很差 我的问题是关于打开 关闭和重用连接 我在一份文档中找到了这一点 客户端可以在不再需要连接时随时关闭连接 笔记 然而 鼓励客户
  • mySQL:基于不同条件的多个 COUNT()

    好吧 所以我想做的是根据不同的条件在同一个表上执行不同的 COUNT 而不需要嵌套查询 效率 或子查询 因此可以将其制作成视图 这可能吗 示例 表具有日期列 查询应该能够生成固定日期之前和之后的行数计数 您正在使用 MySQL 因此您可以利
  • 从 PHP 开发人员的角度来看,MySQL 与 C#

    我知道使用 PHP 我可以使用 mysql query sql 和 mysql fetch array 结果 获取一些 MySQL 数据并将其放入数组中 在 C 中如何实现这一点 以便我可以将数据放置在数据网格中 这可能是您将看到的填充 D
  • Android中如何存储大量音频文件?

    我正在开发一个需要我播放大量音频文件的应用程序 每个文件的大小约为 100KB 目前我有 220 个文件 将来可能会增加 如果我将这些文件放在 res raw 文件夹中 那么我最终会得到一个非常大的 APK 文件 在 Android 中存储
  • 我应该为移动网站使用什么文档类型?

    我正在从头开始创建网站的移动版本 但我不确定应该使用什么文档类型 好像没有一个明确的标准 是吗 在许多移动网站上我看到 在其他人身上我发现 有人能为我指出正确的移动网页设计方向吗 我想支持大多数现代手持设备 例如 iPhone
  • 以 15 分钟为间隔排列来自销售人员的呼叫数据

    我是 python 和 pandas 以及 stackoverflow 的新手 所以我对我提前犯的任何错误表示歉意 我有这个数据框 df pd DataFrame data Donald Trump German 2021 9 23 14
  • 执行 ApplicationCommands.Close 时实际发生的情况

    我想标题中的问题已经很清楚了 当我打电话时会发生什么 ApplicationCommands Close Execute null null 来自我的 viewmodel 类 我有一个显示用户控件的模型对话框 我有一个命令绑定到用户控件中的
  • Keras 中的 LSTM 序列预测仅输出输入中的最后一步

    我目前正在使用 Keras 使用 Tensorflow 作为后端 我有一个 LSTM 序列预测模型 如下所示 我用它来预测数据系列中的一步 输入 30 个步骤 每个步骤有 4 个特征 输出预测步骤 31 model Sequential m
  • SQL Server:检索存储过程中的自动递增ID?

    我的数据库有一个带有自动递增主键标识 ID 的父表和一个普通的 TIMESTAMP 列 我有带有外键的子表 该外键引用父 ID 列 我想编写一个存储过程 将新列插入到父数据库和子数据库中 如何将子 ID 列设置为等于新的自动递增父 ID 列
  • 单击导航抽屉的项目不会打开片段

    我想使用 Android Studio v 3 5 的默认导航抽屉活动 创建此默认活动 新项目 gt 导航抽屉活动 后 我启动了此模板 如果我单击导航菜单的图标之一 例如 图库 NavHost 的当前片段不会更改 据我了解以下部分 http
  • 如何在运行时在react-native-mapbox-gl中显示/隐藏栅格图层(可见性属性可见/无)

    我在地图初始化中设置了自定义样式 url 喜欢
  • 在什么情况下你会选择使用 Map 而不是普通数组? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当最好使用 Map 而不是普通数组时 我很难找到真实的情况 只是每次使用似乎都比较困难 你实验过合适的案例吗 谢谢 As MDN 简要介绍了 h
  • 在 IE6 中链接 CSS 类 - 试图找到 jQuery 解决方案?

    tl dr 有人知道如何使用 jQuery 或类似的方法为 IE6 应用链式类吗 Right 也许我问的是不可能的事 我认为自己对 Javscript 和 jQuery 相当陌生 但话虽这么说 我最近编写了一些相当复杂的代码 所以我肯定会到
  • PWA 有没有办法访问主机设备的电话号码?

    我计划为 Android 设备开发一款渐进式 Web 应用程序 一个主要问题是 PWA 是否可以访问主机电话号码 我们的业务是向业务合作伙伴提供廉价手机 如果我们的 PWA 可以访问设备的电话号码 我们就可以更轻松地进行两因素身份验证 我认
  • 如何为外部命令提供输入?

    据我了解 Scala 可以运行系统命令并接收其输出 我正在为我拥有的系统命令编写一个网络客户端 因此我需要执行该命令 接收输出 根据输出我可以给它一个命令 我想继续这样做 直到用户终止该命令 我已经阅读了一些有关 ProcessIO 的内容
  • 在 SQL 中,使用 DISTINCT 如何影响性能?

    我试图选择一个不同的列表 其中在多个字段上创建重复项 例如 SELECT tablename field1Date tablename field2Number tablename field3Text FROM tablename 将分别
  • 实现滚动锚定时元素“轻微抽搐”

    编辑 令人尴尬的是 我最初在 Chrome 上看到了这个问题 但问题是因为我稍微缩小了浏览器 导致子像素元素大小调整 如果元素是完整像素高度 则效果很好 然而 我相信这仍然是一个问题 因为 Firefox 渲染子像素元素的方式似乎与 Chr
  • os.Logger (os_log) 忽略新的隐私字符串插值

    在 iOS 14 模拟器上使用以下代码 所有日志语句都以明文形式打印 没有发生任何编辑或散列 在 Xcode 控制台和 Mac 上的 Console app 中都可以 还需要什么来测试编辑是否有效吗 let email email prot
  • Hibernate 在外键字段中插入空值

    我有 2 个简单的域对象 如下所示 使用 MYSQL DB Entity Table name Product public class Product Id Column name productId GeneratedValue pro