Java 版本应该是api返回的DTO的一部分吗?

Java 版本应该是api返回的DTO的一部分吗?,java,rest,etag,Java,Rest,Etag,我有一个版本字段的实体 @Data @NoArgsConstructor @AllArgsConstructor @javax.persistence.Entity @Table(name = "meals", catalog = "nutrientTracker") public class Meal implements Entity<Long> { @Id @GeneratedValue(strategy = Genera

我有一个版本字段的实体

@Data
@NoArgsConstructor
@AllArgsConstructor
@javax.persistence.Entity
@Table(name = "meals", catalog = "nutrientTracker")
public class Meal implements Entity<Long> {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private long id;

    @Column(name = "comment")
    private String comment;

    @Column(name = "date")
    private LocalDateTime date;

    @Column(name = "foods")
    private String foods;

    @Column(name = "eaten")
    private boolean eaten;

    @Column(name = "price")
    private float price;

    @Column(name = "latitude")
    private double latitude;

    @Column(name = "longitude")
    private double longitude;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @Version
    @Column(name = "VERSION")
    private long version;

    @Override
    public Long getId() {
        return this.id;
    }
}
无论如何。这也是坏习惯吗?

不是

version列用于对数据库执行某些操作,因此不应向API用户公开。根据文件:

指定用作其乐观锁定值的实体类的版本字段或属性。该版本用于确保执行合并操作时的完整性以及乐观并发控制

没有

version列用于对数据库执行某些操作,因此不应向API用户公开。根据文件:

指定用作其乐观锁定值的实体类的版本字段或属性。该版本用于确保执行合并操作时的完整性以及乐观并发控制


好的,我在ETag的MD5散列中使用了它,同时使用了一些服务器端密钥。好吗?好的。我也这么认为。好吧,我在我的ETag的MD5散列中使用了它,同时使用了一些服务器端密钥。好吗?好的。我想是的。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MealDTO implements DTO<Meal, Long> {
    @ApiModelProperty(required = true, example = "-1", value = "id")
    private long id;

    @ApiModelProperty(required = true, example = "tasty", value = "comment")
    private String comment;

    @ApiModelProperty(example = "1994-11-05T13:15:30Z", value = "date")
    private LocalDateTime date;

    @ApiModelProperty(example = "1605294438", value = "dateEpoch")
    private long dateEpoch;

    @ApiModelProperty(required = true, example = "banana,apple", value = "foods")
    private String foods;

    @ApiModelProperty(example = "false", value = "eaten")
    private boolean eaten;

    @ApiModelProperty(example = "6.9", value = "price")
    private float price;

    @ApiModelProperty(example = "69.6969696969", value = "latitude")
    private double latitude;

    @ApiModelProperty(example = "42.0420420420", value = "longitude")
    private double longitude;

    @ApiModelProperty(example = "1", value = "userId")
    private long userId;

    @ApiModelProperty(example = "1", value = "etag")
    private String etag;
}
const result: Meal = response.data;
result.etag = response.headers['etag'];
return result;