Java Spring引导的Javers返回@Transient字段的实体\u实例\u和\u NULL \u ID
我刚刚开始在我的应用程序中使用Javers,但我有一些实体被注释为@Transient,我认为Javers会忽略它们,但不会:(,相反,它会引发一个异常:Java Spring引导的Javers返回@Transient字段的实体\u实例\u和\u NULL \u ID,java,spring-boot,javers,Java,Spring Boot,Javers,我刚刚开始在我的应用程序中使用Javers,但我有一些实体被注释为@Transient,我认为Javers会忽略它们,但不会:(,相反,它会引发一个异常: JaversException ENTITY_INSTANCE_WITH_NULL_ID: Found Entity instance 'ProductData' with null Id-property 'id' 你们知道有没有办法忽略这些瞬态场 他们说@Transient注释是@DiffIgnore的同义词。但我不知道这是否只与比较有
JaversException ENTITY_INSTANCE_WITH_NULL_ID: Found Entity instance 'ProductData' with null Id-property 'id'
你们知道有没有办法忽略这些瞬态场
他们说@Transient注释是@DiffIgnore的同义词。但我不知道这是否只与比较有关,还是与审计流程有关
这是我的密码:
@Entity
public class ProductExternal extends AbstractEntity implements ExternalEntity {
@Transient
private ProductData productData;
@NotNull
@Column(unique=true)
private Long externalId;
public ProductExternal() { }
//get set
}
--
父类
@MappedSuperclass
public abstract class AbstractEntity implements Serializable {
public AbstractEntity() {}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
protected Long id;
@Version
@Column(columnDefinition = "bigint default '0'")
protected Long version;
//get set
}
您的类和映射(注释)似乎很好。例外情况是:
Found Entity instance 'ProductData' with null Id-property 'id'
因此,您正试图向Javers提交一个ProductData类的对象,该对象具有nullid
字段。显然,这是不可能的。这是Hibernate的@GeneratedValue
魔术的一个常见问题。您的字段首先为null,然后在调用DB sequence next val之后,Hibernate将对其进行更新
通常,在持久化对象后,您应该调用Javers
commit()
。当使用Javers的自动审核特性时,可以很容易地实现这一点:@JaversAuditable
或@JaversSpringDataAuditable
。它们应用于正确的阶段,并调用Javerscommit()
供您参考。请参阅。但我的对象是一个临时对象,它没有Id,即使在Hibernate提交之后,Hibernate也会忽略它。因此,如果我们遵循Hibernate的流程,就没有办法设置Id属性。作为一个回文解决方案,我所做的是设置一个假Id,但如果我可以忽略所有@Transient字段,那将是非常棒的。如果没有,我将检查此请求是否已解决,如果可能或不可能,我只需要一个最终答案。顺便说一句,我已经在使用@JaversSpringDataAuditable
你的意思是你是否可以忽略@Transient注释?是的,忽略正在审核的@Transient字段。Javers会忽略它们,它们与我无关。没有人需要忽略它们重新指定字段?@OtávioAugustoJunior,Javers确实忽略了带有@Transient
ann的字段和getter,这非常符合逻辑。我没有改变上面代码中的任何内容,如果我没有在我的Transient对象上设置假ID,我会得到带有空ID属性'ID'错误的。即使设置ID,Javers更改的结果也是错误的:。它不会忽略字段。我将调试Javers并尝试理解框架,也许我还需要做其他事情。Tks。
Found Entity instance 'ProductData' with null Id-property 'id'