【发布时间】:2023-04-08 19:30:01
【问题描述】:
我对 ehcache 相当陌生,据我所知,在方法级别上,缓存正在处理要缓存的对象的 id。但是我有不同的情况。
我有一个用户类和一个角色类,它们之间的关系是多对多的,并通过 ids 存储在另一个表中。
public class User{
@Id
@Column(name="ID")
@GeneratedValue(generator="idGenerator",strategy = GenerationType.SEQUENCE)
private Long id;
...
@ManyToMany(targetEntity = Role.class, fetch = FetchType.EAGER)
@JoinTable(name = "ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
protected Set<Role> roles;
...
}
public class Role{
@Id
@Column(name="ID")
@GeneratedValue(generator="idGenerator",strategy = GenerationType.SEQUENCE)
private Long id;
...
@ManyToMany(targetEntity = User.class)
@JoinTable(name = "USER", joinColumns = { @JoinColumn(name = "ROLE_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") })
protected Set<Role> roles;
...
}
顺便提一下,没有这样的 UserRole 域类。
服务方法有点像;
public RoleService{
@Cacheable
public Set<Role> getUserRoles(Long userId)
{
...
}
}
问题是,在服务级别上,我希望根据 userId 缓存角色。如何使用用户 id 缓存角色?
【问题讨论】:
标签: java hibernate ehcache second-level-cache