gpt4 book ai didi

java - 如何将 List 复制到没有 ID 的新列表?

转载 作者:行者123 更新时间:2023-12-01 09:38:22 27 4
gpt4 key购买 nike

我有一些实体,例如 User

class User{
private Long id;
private String Name;
private List<Role> roles;
}

当我从数据库获取此用户时,我有 user = UserDao.getUser(1);

我有一些List<Role> someList;

我需要副本user.getRoles()someList

但是如果我写user = user.getRoles()所有Role someList 中的对象ID 不为空;

我要设置someList给另一个用户,但如果 ID 不为空,我就不能使用它。

我能做到

for (Role role: user.getRoles()) {
role.setId(null);
someList.add(role);
}

但我认为这是不好的做法。也许你知道最好的方法?

最佳答案

假设您处于事务内部,并且不想在不同用户之间重用 Role 对象:按照 hibernate 的工作方式,您需要创建角色对象,否则 Hibernate 会知道您将同一个实例分配给另一个对象,并且将完全忽略您已将 id 设置为 null。

就我个人而言,我认为应该在名为 cloneRole 类中创建一个静态方法,该方法接收角色列表并实例化新角色(没有 id)。

最重要的问题是:您真的不想重复使用角色对象吗?并且可能有 2 个具有相同数据的角色,但只是分配给不同的用户(这可能违反第三范式......但这取决于您的要求)。

关于java - 如何将 List<Entity> 复制到没有 ID 的新列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38651743/

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