实体类如下:
@Data @Table(name = "t_sys_role") @Accessors(chain = true) public class Role extends BaseEntity implements Serializable { private static final long serialVersionUID = -13963720540937036L; /** * 角色编号 */ @Id @Column(name = "role_no") private String roleNo; /** * 角色名称 */ @Column(name = "role_name") private String roleName; /** * 角色描述 */ @Column(name = "role_desc") private String roleDesc; }
现在roleNo为主键,如果实体类中不给roleNo加上@Id注解,那么下面的代码会执行失败,因为虽然数据库表中已经指定了role_no为主键,但是在实体类中如果不指定主键,java代码就找不到主键,故无法根据主键修改。
@Override public int updateInfo(Role role) { User user = SessionCache.get(); role.setUpdateTime(new Date()).setUpdateUser(user.getUsername()); return roleDao.updateByPrimaryKeySelective(role); }