首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@OneToOne关系-非NULL属性在Hibernate中保持为NULL,没有错误

@OneToOne关系-非NULL属性在Hibernate中保持为NULL,没有错误
EN

Stack Overflow用户
提问于 2013-12-09 16:30:33
回答 1查看 489关注 0票数 0

我有以下@OneToOne映射配置(只是相关的部分):

实体Trademark

代码语言:javascript
复制
@OneToOne(mappedBy = "trademark", optional = false, cascade = CascadeType.MERGE)
private ReferenceNumber referenceNumber;

实体ReferenceNumber

代码语言:javascript
复制
@OneToOne(optional = true)
private Trademark trademark;

数据库:允许referencenumber.trademark_id为null-FK,trademark表中没有引用列。

我使用以下代码来实现实体持久化:

代码语言:javascript
复制
    Session session = HibernateUtil.getSessionFactory().openSession();
        long start = System.currentTimeMillis();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
                            //private ReferenceNumber ref;
            ref.setError(0);
                            // Trademark trademark;
            trademark.setReferenceNumber(ref);
            trademark.setService(ref.getService());
            session.save(trademark);
            ref.setTrademark(trademark);
            session.update(ref);
            tx.commit();
            log.debug("Inserted row id={}", trademark.getId());
        } catch (RuntimeException ex) {
            log.error("Error during attempt to persist new trademark", ex);
            if (tx != null) {
                tx.rollback();
            }
            throw ex;
        } finally {
            session.close();
            log.trace("Db processing time: {}ms", System.currentTimeMillis() - start);
        }

现在我注意到在很多情况下(但不是在所有情况下),商标是持久化到DB中,但referencenumber中的FK到trademark没有设置!我使用这种配置已经相当长的时间了(大约4个月),我以前从来没有遇到过这样的行为。运行时期间不会抛出错误。导致这种行为的原因是什么?不久前,我将Hibernate版本升级到了4.2.1.Final。可能是bug?

EN

回答 1

Stack Overflow用户

发布于 2013-12-09 19:18:22

TopLink实现中,optional=false不会在生成的模式中强制使用非空外键,如果要应用此约束,则必须在@JoinColum标注中使用nullable选项

代码语言:javascript
复制
@JoinColumn(nullable = false)
private ReferenceNumber referenceNumber;

注意:如果您尝试了其他一些JPA实现,它可能会将optional=false解释为非空约束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20466226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档