【发布时间】:2015-06-25 10:55:45
【问题描述】:
有一个 >70 列的表格。
我将其中大约 8 个列与 .java 对象一起使用,包括 id - 不确定这是否重要。
我的 ID 列有以下内容:
@Column(name = "pseudonym", nullable = false)
@Basic(fetch = FetchType.EAGER)
@Id
我的问题是这样的:
如果我想使用 xxxDAO.store(updatedRow) 更新一行 - 我需要指定任何内容来引用行 ID 还是我在这里遗漏了什么?
我收到以下异常:
DEBUG: org.springframework.web.servlet.DispatcherServlet - Could not complete request
javax.persistence.PersistenceException: org.hibernate.exception.DataException: Could not execute JDBC batch update
.. ~(adding this in here)~ not a valid month
希望我已经充分解释了这一点。如果我还没有,请告诉我。
提前致谢
一些伪代码供参考:
item = dao.getItemById(123);
item.setUpdateTime(theTime);
dao.store(item);
商店:return getEntityManager().merge(itemToStore);
澄清
我在not a valid month 上面遇到了异常。这是因为我试图更新一个具有定义为时间戳的列的 Oracle 表。我试图传递一个字符串值(即使字符串的结构本质上是相同的)。
为了调试这个问题,我的问题是我是否可以通过 JPA DAO 更新一行而无需例如我的 Java 对象中定义的所有 70 多列。事实证明这是可能的,并且异常与没有定义的列无关。 例外只是因为我试图更新的时间戳没有正确的结构。我将字符串更改为日期对象,并且它们更新了
【问题讨论】:
-
@ID属性不需要nullable=false和FetchType.EAGER。而TABLE是一个关键字,如果你的ID列真的是这样命名的,你将不得不转义它:@COLUMN(name="\"TABLE\"") -
@TobiasLiefke - 很抱歉造成混淆,这是表格的化名。感谢其他指针
-
当您询问异常时,请务必发布完整的异常 stck 跟踪以及导致此异常的代码。
-
是的,我了解 JB Nizet,但我不能这样做;道歉。
标签: java jpa entitymanager