首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.springframework.data.annotation.Transient对javax.persistence.Transient

org.springframework.data.annotation.Transient对javax.persistence.Transient
EN

Stack Overflow用户
提问于 2016-09-21 04:23:04
回答 2查看 3.5K关注 0票数 3

我使用Spring 1.4.0,Spring数据作为存储层,Hibernate用于JPA。

当我在不想持久化的实体字段上使用org.springframework.data.annotation.Transient注释时,它不起作用。

当我使用javax.persistence.Transient时,它按预期工作(每个注释都来自javax.persistence包)。

我对这些文件做了很多阅读,但却找不出原因。请帮助我理解不同之处,谢谢。

更新

从下面的注释和答复中,我将@Id和@瞬态从javax.persistence包更改为org.springframework.data.annotation,它仍然会产生如下错误:

导致: org.springframework.beans.factory.BeanCreationException:错误创建名称为“entityManagerFactory”的bean类路径资源init方法的org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class:调用失败;嵌套异常为org.hibernate.AnnotationException:没有为实体: com.xxx.domain.entities.PriceScheduleEntity指定的标识符

我想我需要改变所有的注释,包括@Column@Entity,等等。到相同的供应商/提供者/包以使其工作。JPA和spring的注释不能混合吗?我以后再试着更新。

EN

回答 2

Stack Overflow用户

发布于 2017-07-13 12:09:31

Springs只有在Springs进行映射时才与@Transient相关,例如在Springs中。对于Spring,您应该使用javax.persistence.Transient注释,因为JPA (或它的实现)执行映射,而这些注释显然会忽略Spring注释。

票数 4
EN

Stack Overflow用户

发布于 2016-09-21 05:29:21

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

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

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

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

尝试将实体上的@Id注释从javax.persistence.Id更改为org.springframework.data.annotation.Id并查看。希望它能成功。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39607518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档