我在 JPA 中使用 Value 对象时遇到问题

问题描述

我必须同时在项目和JPA中使用ValueObject,但是将属性更改为valueobject时却报错,我还不知道如何解决问题

错误:(“Id”属性类型不应为“BrandCodigo”)(“基本”属性类型不应为“BrandNombre”)


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity(name = "Brand")
@Table(name = "marcas",uniqueConstraints = {
                @UniqueConstraint(name = "uk_marcas_nombre",columnNames = "nombre")
        })
public class Brand {
    @Id
    @Column(name = "codigo")
    private BrandCodigo codigo;
    @Column(name = "nombre",nullable = false,columnDeFinition = "varchar(80)"
    )
    private BrandNombre nombre;

}

解决方法

当您提到 lombok 的 @Value 时,这是不可能的 afaik。 Lombok 的 @Value 用于不可变对象。

但是您的实体必须是可变的,因为 JPA 构造它的方式。

此外,值对象没有身份,但数据库实体应该有主键。