我有如下的Scala特征
trait Id {
@javax.persistence.Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@BeanProperty
var id: Long = _
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个实体 (Person),我想扩展 Id 特征但将 id 列名称更改为 personid。我怎样才能做到这一点?
下面的人物片段:
@NamedQuery(name=”findAll”,query=”select p from Person p”)
class Person extends Id {
@BeanProperty
@Column(name=”personid”)
def personid = id
}
Run Code Online (Sandbox Code Playgroud)
您可以引入一个personid返回值的方法id:
trait Person extends Id {
def personid = id
}
Run Code Online (Sandbox Code Playgroud)
删除id成员 inPerson将违反子类实例必须始终可用的原则,就好像它们是基类的实例一样。也就是说,如果Personextends Id,那么您必须能够调用它的所有方法id,否则您将无法将 type 的对象分配给 typePerson的引用Id。
因此,如果您扩展Id,扩展的特征/类将始终具有id.
但是,您可以通过将包id设为私有来限制基本特征中的可见性:Idid
private[package_name] var id: Long = _
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
663 次 |
| 最近记录: |