gpt4 book ai didi

java - 如何使用 createRow() 将行添加到 View 对象后删除行

转载 作者:行者123 更新时间:2023-12-01 12:26:59 26 4
gpt4 key购买 nike

我有一个 View 对象,我创建了一行,如下所示:

ContactsVORowImpl person = ( ContactsVORowImpl ) getContactsVO().createRow();

然后我分配所创建行的一些属性,而其他属性则未分配(故意):

        person.setFirstname( "firstname" );
//person.setLastname( "" );
person.validate();

我收到验证错误,因为 Lastname 为空。

然后我无论如何都会提交,将该行插入 View 对象:

getDBTransaction().commit();

这里,由于 Lastname 为空,我得到以下异常:

  Exception Class:  class oracle.jbo.AttrValException,  Message: JBO-27014: The attribute Lastname in ContactsEO is needed.
| oracle.jbo.AttrValException: JBO-27014: The attribute Lastname in ContactsEO is needed.
at oracle.jbo.server.JboMandatoryAttributesValidator.validate(JboMandatoryAttributesValidator.java:224)
at oracle.jbo.server.EntityDefImpl.validate(EntityDefImpl.java:3200)
at oracle.jbo.server.EntityCache.validate(EntityCache.java:3601)
at oracle.jbo.server.EntityImpl.validateEntity(EntityImpl.java:2361)
at oracle.jbo.server.EntityImpl.validate(EntityImpl.java:2540)
at oracle.jbo.server.DBTransactionImpl.validate(DBTransactionImpl.java:4540)
at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2035)
at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2378)
  1. 既然我没有插入该行,怎么会发生这种情况?
  2. 我该如何解决这个问题?

我实际上正在做一个小组提交;我正在检测有缺陷的行,并且不将它们插入 View 对象中以避免提交。尽管如此,它还是试图 promise 它们;为什么?

最佳答案

文档指出:

Creates a new view row. The new row is not placed in the entity cache until its primary key is initialized. It is inserted into the database when changes are posted to database and the transaction is committed.

http://docs.oracle.com/cd/E12839_01/apirefs.1111/e10653/oracle/jbo/server/ViewObjectImpl.html#createRow()

最后一部分似乎说它已插入数据库,因此这就是您收到异常的原因。

解决方法:尝试调用 removeCurrentRow,但在此之前检查当前行是否是您刚刚创建的行。未经测试。

关于java - 如何使用 createRow() 将行添加到 View 对象后删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26257379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com