Ple*_*rds 4 java inheritance jpa data-annotations
在其他编程语言方面有 20 年的经验,现在我是 Java 新手,感觉自己像个菜鸟程序员......
我使用Indexable抽象类来扩展我的所有@entity类,因此我不需要将@Id @GeneratedValue @SequenceGenerator它们放在所有类上。我也有Auditable通向@CreatedBy @CreatedDate @ModifiedBy @ModifiedDate这些继承路径的方法:
现在我注意到我的 99% 的实体类还具有:
@Column(nullable = false, unique = true) private String name;
Run Code Online (Sandbox Code Playgroud)
我想将该行移到类中Indexable以避免 99% 中的样板代码,但是没有name字段的两个类是重要的可审计类,我不想将所有祖先字段复制到它们只是为了防止其上出现空名称错误。
问题是:如果我在这两个类上覆盖该字段的注释以使其可为空且瞬态,是否可以避免在表上创建该字段并且不会用空名称打扰用户?
class SomeAuditableClass extends Audited {
//@override
@Column(nullable = true) @Transient private String name;
Run Code Online (Sandbox Code Playgroud)
Java中有没有办法重写类变量中的内容?没有多大帮助...
虽然不是您确切问题的答案,但解决此问题的典型方法是扩展Indexable另一个类,例如IndexableWithName. 然后,99%具有该name字段的实体将扩展IndexableWithName,而没有该name字段的两个类将直接扩展Indexable。
就数据库映射而言,我无法不尝试就说您提出的建议是否有效。但我认为这将是糟糕的类设计,因为你可能会name在超类中为该字段提供一个 getter 和一个 setter,并且它们对于两个没有真正字段的类没有意义name。
| 归档时间: |
|
| 查看次数: |
4056 次 |
| 最近记录: |