当对象中的多个属性映射到数据库中的相同字段但只有一个映射可以写入字段时,Toplink可以使用只读映射。
JPA有这样的功能,如何编写注释?我有一个@ManyToOne和一个@Column注释需要映射到数据库中的同一个字段。
@ManyToOne(optional=false, fetch=FetchType.LAZY) @JoinColumn(name="USR_ID", referencedColumnName="USER_ID", nullable=false) private User user; /** @generated **/ @Column(name="USER_ID", nullable=false, length=30) private String userId;
答案 0 :(得分:28)
来自here
Column annotation和XML元素定义了可插入和可更新的选项。这些允许从SQL INSERT或UPDATE语句中省略此列或外键字段。如果表上的约束阻止插入或更新操作,则可以使用这些。如果多个属性映射到同一数据库列,也可以使用它们,例如通过ManyToOne和Id或Basic映射使用外键字段。将insertable和updatable都设置为false,有效地将该属性标记为只读。
所以
@Column(name="USER_ID", nullable=false, length=30,
updatable=false, insertable=false)
private String userId;
应该这样做