【问题标题】:JPA readonly mappingJPA 只读映射
【发布时间】:2020-08-11 23:35:36
【问题描述】:

当一个对象中的多个属性映射到数据库中的相同字段但只有一个映射可以写入该字段时,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;

【问题讨论】:

    标签: java jpa


    【解决方案1】:

    来自here

    Column 注释和 XML 元素定义了可插入和可更新的选项。这些允许从 SQL INSERT 或 UPDATE 语句中省略此列或外键字段。如果表上的约束阻止插入或更新操作,则可以使用这些。如果多个属性映射到同一个数据库列,例如通过 ManyToOne 和 Id 或基本映射的外键字段,也可以使用它们。将可插入和可更新都设置为 false,有效地将属性标记为只读。

    所以

        @Column(name="USER_ID", nullable=false, length=30,
            updatable=false, insertable=false)
        private String userId;
    

    应该这样做

    【讨论】:

    • 即使在使用可更新和可插入后,它仍然显示“'字段列表中的未知列'xxx'”
    • @a-g:听起来您遇到的问题与此处解决的问题不同。打开一个新问题并提供一些详细信息,我相信有人会帮助您解决它!
    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2012-01-04
    • 2011-07-13
    • 2019-10-04
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多