我试图在数据库行中进行更新。我有这个例外
Caused by: org.hibernate.TransientObjectException: The given object has a null identifier: com.models.User
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.getUpdateId(DefaultSaveOrUpdateEventListener.java:270)
这是我从jsp文件提交操作的控制器代码
// create new user object
User user = new User();
user.setName(name);
user.setEmail(email);
user.setActive(false);
_userDao.update(user);
这是我的dao,它定义了使用Hibernate会话工厂实用程序的更新
public void update(User user) {
getSession().update(user);
}
//edited:这是我对用户实体类的映射
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "userId")
private Integer id;
@Column(nullable = false)
private String name;
@Column(unique = false, nullable = false)
private String email;
@Column(nullable = true)
private boolean active;
我无法更新电子邮件地址与jsp输入表单中输入的地址相同的用户记录。请帮帮忙,这是我第一次尝试用hibernate sessionfactory更新字段。
我在工作中遇到过更棘手的情况。正如@ByeBye所说,问题是试图更新一个以前没有持久化的实体。请参见以下示例
SalesOrder salesOrder = consignment.getSalesOrder();
if (salesOrder != null) {
// some code
}
else{
//
salesOrder = new SalesOrder();
consignment.setSalesOrder(salesOrder);
}
salesOrderRepository.update(salesOrder); // hibernate update
return salesOrder;
}
Here when the execution of code comes to else part. It try to create a new sales order object (where the object id is null ) and try to update it. And this cause the mentioned error.
因此,我的修复方法只是将更新更改为saveOrUpdate
.......
salesOrder = new SalesOrder();
consignment.setSalesOrder(salesOrder);
}
salesOrderRepository.saveOrUpdate(salesOrder);
return salesOrder;
}
因此,它命令hibernate首先持久化不存在的对象,然后对其进行所有更新(如果需要)。
希望这个场景能对大家有所帮助
问题是您在不存在的实体上使用update
方法。如果您想保存新创建的实体,您必须使用保存
或saveOrUpdate
。
update
方法仅在实体已存在于数据库中时有效。
我在我的spring boot应用程序中出现了这个错误。当我想调用这个存储库时,我遇到了这个错误 这是我的存储库: 这就是我称之为此方法的地方: 如何检查方法返回的结果?我调试了我的代码,但在断点它只是返回这个错误。 谢谢你的帮助。
问题内容: 这将类似于该方法。 我需要将无法控制的对象存储在一个集中,并确保只有两个对象实际上是同一对象(不包含相同的值)时,这些值才会被覆盖。 问题答案: 会帮你的忙。但我很好奇,对象集(按值组合对象)有什么问题? 对于您的特定问题,我可能会保留一组ID或包装对象。包装对象将包含一个引用,并按<==>进行比较。 还值得注意的是,Python对象也具有功能。该功能对于将对象放入集合或字典是必需的。
我在使用spring数据从1对1关系btn表检索数据时遇到了一个问题。我已经回顾了平台上的几个解决方案,但奇怪的是,在问题首次出现之前,我已经实现了所有建议的解决方案。请帮助我找到我所缺少的东西,或是使对他人有用的解决方案对我无效的任何东西。 以下是这两个实体之间的关系 错误消息: 2021-12-23 15:02:42.116错误11144---[nio-8089-exec-5]o.a.c.c.
我有一个实体:与实体:之间的关系如下: QueryParameter实体: HtmlElement实体: 组件实体: 类型实体: 基本上,这里的关系意味着一个html元素有一个与其相关的组件。 现在,当我想要找到如下所示的所有组件时: 它给出了以下错误: 如果我运行生成的查询,它将返回3行,但这没有任何意义,因为Component有不同的html组件(input、select等),并且HtmlEl
在eclipse中调试时 退回申请。isEmpty()?空:应用程序。得到(0); 这些表达式被计算为 applications.is空()- 应用。获取(0)- 应用。大小()- 但在执行这一行之后,它的抛出错误 组织。冬眠HibernateeException:找到了多个具有给定标识符的行:263536, 即使它的大小显示为1,那么它为什么以及如何在执行后获得多行。
问题内容: 我需要做一些实验,并且需要知道javascript中对象的某种唯一标识符,因此我可以查看它们是否相同。我不想使用相等运算符,我需要类似python中的id()函数的功能。 是否存在这样的东西? 问题答案: 更新 我下面的原始答案写在6年前,其风格与时代和我的理解相吻合。为了回应评论中的某些对话,一种更现代的方法如下: 如果您对旧版浏览器有要求,请在此处查看的浏览器兼容性。 原始答案保留