相关疑难解决方法(0)

Java:修改更改哈希码的id

我使用HashSet,我需要修改一个对象的ID,但它改变了hashcode并破坏了HashSet和hashCode()方法的规则.

什么是最佳解决方案:从Set中删除对象并使用新ID添加对象,或者在Set中的每个对象中保留哈希代码(例如,在构造函数中生成),还是有其他方法可以解决此问题?

感谢帮助.

更新:我犯了错误:在对象中保留哈希代码很糟糕,因为在这种情况下,相等的对象可以有不同的哈希代码.

java hashmap hashcode hashset

5
推荐指数
1
解决办法
3716
查看次数

@OneToMany 删除孩子

我有两个这样的实体:

public class Client {
  ...
@OneToMany(mappedBy = "client", cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE },orphanRemoval = true, fetch=FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<CompanyContract> companyContracts;
  ...
}
Run Code Online (Sandbox Code Playgroud)

公司合同:

public class CompanyContract {

...

@ManyToOne
@JoinColumn(name = "IDCLIENT")
private Client client;

...
}
Run Code Online (Sandbox Code Playgroud)

我想删除这样的 companyContract :

client.getCompanyContracts().remove(companyContract)
client = clientService.updateClient(client);
Run Code Online (Sandbox Code Playgroud)

但是删除过程没有发生

我究竟做错了什么 ?

编辑

这是我的 DAO 中的 updateClient 方法:

@Override
@Transactional
public Client updateClient(Client client) {

    return entityManager.merge(client);
}
Run Code Online (Sandbox Code Playgroud)

java spring hibernate

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

hashcode ×1

hashmap ×1

hashset ×1

hibernate ×1

spring ×1