【发布时间】:2018-12-09 22:00:12
【问题描述】:
20 年其他编程语言,现在我是 Java 新手,感觉自己像个菜鸟程序员......
我使用Indexable 抽象类来扩展我所有的@entity 类,因此我不需要将@Id @GeneratedValue @SequenceGenerator 放在所有这些类上。我也有Auditable 和@CreatedBy @CreatedDate @ModifiedBy @ModifiedDate,这导致了那些继承路径:
- MostEntityClasses > AuditableClass > IndexableClass;
- SomeEntityClasses > IndexableClass。
现在我注意到我 99% 的实体类也有:
@Column(nullable = false, unique = true) private String name;
我想将该行移至 Indexable 类以避免 99% 中的样板代码,但是没有 name 字段的两个类很重要 可审计 类,我不想只是将所有祖先字段复制到它们,以防止其上出现空名称错误。
问题是:如果我在这两个类上覆盖该字段的注释以使其可为空和瞬态,是否可以避免在表上创建此字段并且也不用 null 打扰用户名字?
class SomeAuditableClass extends Audited {
//@override
@Column(nullable = true) @Transient private String name;
Is there a way to override class variables in Java? 中的内容没有多大帮助...
【问题讨论】:
-
@AttributeOverride注解不能模拟@Transient,可以吗? -
你尝试的时候发生了什么?
-
我在建模阶段,还没试过,对不起!我不想以一种方式对其进行建模,直到意识到它是错误的,然后才不得不重新建模。
标签: java jpa inheritance data-annotations