【问题标题】:Non-persisting fields: JPA '@Transient' vs Java SE 7 'transient'非持久字段:JPA '@Transient' vs Java SE 7 'transient'
【发布时间】:2016-10-25 21:19:48
【问题描述】:

使用哪一个来跳过实体中持久存在的字段?

@Transient 用作 JPA 的一部分以忽略字段的持久性

Java 中的 transient 关键字用于指示字段应该 不被序列化和持久化(Java SE 7 版规范)

我检查了两者,并且数据库中没有生成任何列:

实体:

@Entity
public class Person implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id@GeneratedValue(strategy=GenerationType.IDENTITY)
    private long id;
    private String name;
    private String forname;

    @Transient
    private String nickName;

    private transient String pseudo;

生成的表格:

【问题讨论】:

  • "transient" 与持久性无关……它是为了防止序列化,仅此而已。 “持久性”!=“序列化”

标签: java jpa entity transient


【解决方案1】:

您应该根据规范使用瞬态

【讨论】:

  • @Transient 用于持久化,而不是用于序列化,这是我想说的,当谈到规范时,你要求序列化。
  • 好吧@Trigon219,但我在附图中说,我正在寻找数据库中的持久性......并且两者都给出了相同的结果......没有为相应的字段生成列......
  • 好吧,如果你不希望该字段被持久化,那么使用@Transient,即使这与JPA框架更相关,也就是你正在使用。
  • 有详细的原因吗?
猜你喜欢
  • 1970-01-01
  • 2018-04-09
  • 2015-06-08
  • 2018-05-22
  • 1970-01-01
  • 2014-08-10
  • 2011-03-25
  • 1970-01-01
  • 2018-03-22
相关资源
最近更新 更多