2016-05-30 85 views
0

我有这对于一些原因(Why should anybody put annotations on the getters or setters when using JPA to map the classes?)我们注释getter方法,而不是该领域的实体:JaVers异常,当@Id是消气,而不是对房地产

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. 

是否支持ED?

+0

你的字段和属性混合的注解? –

+0

没有我不混合注释。所有注释都在getter方法 – patri

+1

然后我想JaVers不支持这个...你可能想要注册一个问题。 –

回答

-1

我纠正了。根据文档http://javers.org/documentation/domain-configuration/#property-mapping-style,JaVers支持Bean和字段映射样式。尽管如此,当按照建议使用BEAN映射时,它仍然不起作用。也许它与其他注释冲突?这里是我的代码,我已经把Jave的位置@Id

我将MappingStyle更改为BEAN样式,但它仍然不起作用。这里是JaVers @Id我消气领域:

@Id 
@GeneratedValue(generator = "...") 
@SequenceGenerator(... 
@Column(name = "id") 
@org.javers.core.metamodel.annotation.Id 
public Long getId() 
{ 
    return id; 
} 
+0

JaVers确实支持getter&setters映射,它被称为BEAN映射风格 –

+0

您能否告诉我为什么它在这种情况下不起作用? – patri

2

JaVers做支持上映射的getter setter方法&,这就是所谓的BEAN的映射风格,请参阅:http://javers.org/documentation/domain-configuration/#property-mapping-style

默认情况下,字段映射使用,但您可以按如下切换到BEAN:

Javers javers = JaversBuilder 
       .javers() 
       .withMappingStyle(MappingStyle.BEAN) 
       .build(); 
+0

我已阅读文档,并指出@Id可用于字段和getter。我之前按照你的建议做了它(withMappingStyle ..BEAN),但仍然抛出一个错误。这是我的getter:(添加到原始问题) – patri

+0

@parti正如我之前所说,JaVers支持getter的注释。也许有一个错误,并且它在某些角落案件中不起作用。如果你认为你发现了一个bug,你应该在这里https://github.com/javers/javers/issues报告。请遵循错误报告指南 - https://github.com/javers/javers/blob/master/CONTRIBUTING.md –

+0

感谢您的耐心等待。会做 – patri