0

我有一个实体,出于多种原因(为什么有人在使用 JPA 映射类时应该在 getter 或 setter 上添加注释?)我们正在注释 getter 方法而不是字段:

protected Long id;
...

@Id
@GeneratedValue(...)
@SequenceGenerator(...)
@Column(name = "id")
public Long getId()
{
    return id;
}

public void setId(Long id)
{
    this.id = id;
}

调用时:

javers.findChanges(QueryBuilder.byInstanceId(5, MyModel.class).build())

JaVers 抛出以下异常:

JaversException: ENTITY_WITHOUT_ID Class 'com.myproject.model.MyModel' mapped as Entity has no Id property. Use @Id annotation to mark unique and not-null Entity identifier.

是否支持?

4

3 回答 3

3

JaVers 确实支持在 getter 和 setter 上进行映射,称为 BEAN 映射样式,请参阅:http: //javers.org/documentation/domain-configuration/#property-mapping-style

默认情况下,使用 FIELD 映射,但您可以切换到 BEAN,如下所示:

Javers javers = JaversBuilder
               .javers()
               .withMappingStyle(MappingStyle.BEAN)
               .build();
于 2016-05-30T19:49:34.360 回答
0

我已经设置javers.mappingStyle=BEAN为 application.properties 并且它有效。

于 2020-07-16T05:27:20.393 回答
-1

我站得更正了。根据文档http://javers.org/documentation/domain-configuration/#property-mapping-style,JaVers支持 Bean 和字段映射样式。尽管如此,当按照建议使用 BEAN 映射时,它仍然无法正常工作。也许它与其他注释冲突?这是我的代码以及我放置 JaVers @Id 的位置

我将 MappingStyle 更改为 BEAN 样式,但它仍然不起作用。这是我的 getter 字段上的 JaVers @Id:

@Id
@GeneratedValue(generator = "...")
@SequenceGenerator(...
@Column(name = "id")
@org.javers.core.metamodel.annotation.Id
public Long getId()
{
    return id;
}
于 2016-05-30T12:34:28.680 回答