org.springframework.data.annotation.Transient vs javax.persistence.Transient

org.springframework.data.annotation.Transient vs javax.persistence.Transient,java,hibernate,jpa,spring-boot,spring-data,Java,Hibernate,Jpa,Spring Boot,Spring Data,我正在使用SpringBoot1.4.0,SpringData用于存储库层,Hibernate用于JPA 当我在一个我不想持久化的实体字段上使用org.springframework.data.annotation.Transient注释时,它不起作用。 当我使用javax.persistence.Transient时,它可以按预期工作(每个注释都来自javax.persistence包) 我读了很多文件,但找不出原因。请帮我理解其中的区别,谢谢 更新 根据下面的评论和回答,我将@Id和@tra

我正在使用SpringBoot1.4.0,SpringData用于存储库层,Hibernate用于JPA

当我在一个我不想持久化的实体字段上使用
org.springframework.data.annotation.Transient
注释时,它不起作用。
当我使用
javax.persistence.Transient
时,它可以按预期工作(每个注释都来自
javax.persistence
包)

我读了很多文件,但找不出原因。请帮我理解其中的区别,谢谢

更新 根据下面的评论和回答,我将@Id和@transient从
javax.persistence
包更改为
org.springframework.data.annotation
,它仍然会产生错误,显示:

原因:org.springframework.beans.factory.BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/hibernatejpaaautoconfiguration.class]中定义:初始化方法调用失败;嵌套异常为org.hibernate.AnnotationException:未为实体指定标识符:com.xxx.domain.entities.PriceScheduleEntity


我想我需要更改所有注释,包括
@Column
@Entity
,等等。。向同一供应商/提供商/软件包发送,以使其正常工作。JPA和spring的注释不能混合?我稍后会尝试更新。

如果您的类中有一个不打算持久化的属性。必须使用
@Transient
注释或
元素标记任何此类非持久性字段

根据
javax.persistence.Transient
中的
@Transient
文档-

此注释指定该属性或字段不可用 持久的它用于注释实体的属性或字段 类、映射超类或可嵌入类

javax.persistence.transient
将确保Hibernate在将特定字段保存到数据库时忽略该字段


尝试将实体上的
@Id
注释从
javax.persistence.Id
更改为
org.springframework.data.annotation.Id
,请参阅。希望它能起作用。

Springs
@Transient
仅在Spring数据进行映射时相关,例如在Spring数据MongoDb中。对于Spring数据JPA,您应该使用
javax.persistence.Transient
注释,因为JPA(或其实现)进行映射,而这些映射显然会忽略Spring注释。

您的意思是,当您使用标准化的持久性注释进行持久性时,它会起作用,当您使用专有的Spring注释时,它不会吗?线索在包裹里。其中一个就是为了做到这一点而设计的。“春季数据JPA”!=谢谢我更新了我的问题,我将尝试更改Spring中的所有注释,稍后再进行更新。将@Id从javax.persistence.transient更改为Spring one仍然会产生错误。我的猜测是,我应该使用spring或jpa中的注释,但决不能同时使用两者?我以后再试试。