java hibernate dto_DTO使用Java,Dozer和Hibernate映射和更新到数据库

我正在使用Dozer将Hibernate实体映射到他们的DTO.简化的示例类如下:

@Entity

public class Role {

@Id

@GeneratedValue

@Column(name="RoleId", nullable=false)

public int roleId;

@Column(name="RoleName", nullable=false)

@NotEmpty

public String roleName;

//get + set (not for the roleId since its autogenerated)

}

public class RoleDTO {

private int roleId;

private String roleName;

public RoleDTO(int roleId, String roleName) {

this.roleId = roleId;

this.roleName = roleName;

}

public RoleDTO() {}

//gets + sets

}

现在映射工作正常,但我在尝试进行更新时遇到问题.假设我的数据库中有一个角色(1,“管理员”).我的视图首先使用更新的字段生成DTO:

RoleDTO roleDTO = new RoleDTO(1, "admin");

最终,持久化角色的类接收DTO并通过Dozer将其转换为Entity类以保留更改:

Role role = DozerMapper.map(roleDTO,Role.class);

此时,我的角色实体已丢失其ID,可能是因为ID列被定义为自动增量,我显然无法更新null-ID实体.

那么我应该如何处理这个问题,以便ID和更新的字段全部映射到实体?我总是可以使用hibernate来实现实体对象,并使用DTO中的每个字段更新它们并将其保存回来,但它会破坏使用Dozer的整个目的.

谢谢你的帮助.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值