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

Eclipselink使用Eclipselink尝试在父表中插入,

邹海荣
2023-03-14
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idcondominio")
private Integer idcondominio;
@Basic(optional = false)
@Column(name = "nomecond")
private String nomecond;
@Column(name = "cnpjcond")
private Integer cnpjcond;
@OneToMany(mappedBy = "condominio")
private Collection<Bloco> blocoCollection;

布洛科

private static final long serialVersionUID = 1L;
@EmbeddedId
protected BlocoPK blocoPK;
@Basic(optional = false)
@Column(name = "nomebloco")
private String nomebloco;
@Column(name = "numero")
private String numero;
@JoinColumn(name = "condominio_idcondominio", referencedColumnName = "idcondominio", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Condominio condominio;

=================================创建方法

public void create(Bloco bloco) throws PreexistingEntityException, Exception {
    if (bloco.getBlocoPK() == null) {
        bloco.setBlocoPK(new BlocoPK());
    }
    bloco.getBlocoPK().setCondominioIdcondominio(bloco.getCondominio().getIdcondominio());
    EntityManager em = null;
    try {
        em = getEntityManager();
        em.getTransaction().begin();
        Condominio condominio = bloco.getCondominio();
        if (condominio != null) {
            condominio = em.getReference(condominio.getClass(), condominio.getIdcondominio());
            bloco.setCondominio(condominio);
        }
        em.persist(bloco);
        if (condominio != null) {
            condominio.getBlocoCollection().add(bloco);
            condominio = em.merge(condominio);
        }
        em.getTransaction().commit();
    } catch (Exception ex) {
        if (findBloco(bloco.getBlocoPK()) != null) {
            throw new PreexistingEntityException("Bloco " + bloco + " already exists.", ex);
        }
        throw ex;
    } finally {
        if (em != null) {
            em.close();
        }
    }
}

============================控制器方法

@RequestMapping(value = "cadbloco", method = RequestMethod.POST)
public String cadbloco(@ModelAttribute(value = "Bloco") Bloco bloco, @RequestParam("condid") int idcond ) throws Exception {

    BlocoJpaController jpa = new BlocoJpaController();
    Condominio c = new Condominio();
    c.setIdcondominio(idcond);
    jpa.create(bloco);

    return ("redirect:bloco.htm");

}

例外

NestedServletException:请求处理失败;嵌套异常是javax.Persistence.rollbackException:exception[EclipseLink-4002](Eclipse Persistence.Services-2.5.v20140319-9AD6ABD):org.Eclipse.Persistence.exceptions.databaseException内部异常:com.mysql.jdbc.exceptions.jdbc4.mysqlIntegrityConstraintViolationException:Column'nomecond'不能为空错误代码:1048调用:插入到condominio(bind=>[2 parameters bound]查询:InsertObjectQuery(entity.condominio[idcondominio=null])org.springframework.web.servlet.frameworkservlet.processRequest(frameworkservlet.java:973)org.springframework.web.servlet.frameworkservlet.dopost(.wsfilter.doFilter(wsfilter.java:52)org.netbeans.modules.web.monitor.server.monitorfilter.doFilter(monitorfilter.java:393)

共有1个答案

郭俊拔
2023-03-14

异常表示“nomeCond”值为null。因此,如果在控制器中添加这样的代码:

C.setnomeCond(“一些值”);

这应该能解决问题。,

 类似资料:
  • Oracle 最近宣布把企业级的ORM平台TopLink代码捐献给Eclipse社区,发起并领导名为EclipseLink的Eclipse持久平台项目。 Eclipse持久平台由多个组件构成,主要有EclipseLink-ORM,EclipseLink-OXM,EclipseLink-SDO, EclipseLink-DAS,EclipseLink-DBWS,EclipseLink-XR,Ecli

  • 问题内容: 我已经更新了问题,以便现在 两个 表都使用自动增量。持久化到表的问题也许是数据库模式的问题? 在尝试这样持久保存MessageBean时: 堆栈跟踪: 从MySql: 以及消息字段: 和评论字段: 问题答案: 因为我建议您以下: 在表的字段中添加声明: 在实体声明时使用 这谈到了JPA使用MySQL的自动增量功能 如果不适用(例如,您可能想在同一事务中创建相关的另一个实体),请使用TA

  • 问题内容: 也许我弄错了,但是我虽然JPA能够更新现有表(更改了添加列的模型),但在我的情况下却无法正常工作。 我可以在日志中看到eclipselink尝试创建它,但是由于它已经存在而失败。它不会尝试更新以添加该列,而是继续进行。 这是带有更改的表(添加了在线列) 此后,继续进行以下操作。 我是在做错什么还是错误? 问题答案: 从EclipseLink 2.4开始,您可以在持久性单元的规范中使用它

  • 在JavaEE环境中,我将JPA2.1实现与EclipseLink一起使用, CarColor转换器: persistence.xml > 当我在persistence.xml文件上注释转换器的声明,并试图将我的实体持久化到数据库中时,会出现这样的错误:“请确保转换器类名正确,并且存在于持久化单元定义中。”并且没有编译时间异常,只有一个非常明确的警告:

  • EclipseLink有可能和夸库斯一起使用吗?还是夸库斯太难与Hibernate耦合了? 我们正在选择我们的MP实现的过程中,我们希望尽可能接近参考信息 我在https://quarkus.io/guides/甚至这个论坛上都没有看到太多信息来表明eclipselink也可以与Quarkus一起使用。 任何关于夸库斯为什么与JPA的一个特定的impl(如果是的话)绑得如此紧密的指示也将是受欢迎的

  • 问题内容: 该EclipseLink的文件说,我需要在我的pom.xml与Maven得到它下面的条目: 但是当我尝试使用注释时,NetBeans告诉我,找不到该类。确实如此:Eclipselink的javax.persistence包中没有Entity类。 我必须如何使用Maven设置Eclipselink? 问题答案: 该工件不提供JPA 2.0 API ,您需要添加: 为了简单起见,我建议使用