【问题标题】:JPA. @Column(updatable=false) on @ManyToOne related fieldJPA。 @ManyToOne 相关字段上的 @Column(updatable=false)
【发布时间】:2015-04-28 10:40:55
【问题描述】:

在我的可审计实体中,我有字段 creationUser,我不想在 merge 操作时在 db 中更新。

这是我的实体代码:

@Column(updatable=false) 
@ManyToOne(cascade = CascadeType.MERGE)
public User creationUser;

但它给了我一个错误:

Unexpected exception
PersistenceException: [PersistenceUnit: defaultPersistenceUnit] Unable to build EntityManagerFactory
Caused by: org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property: models.AreaOfMedicine.creationUser

那么如何防止更新该字段? 请帮忙

【问题讨论】:

  • 错误信息告诉你@Column@ManyToOne在这种情况下不能同时指定。删除@Column!
  • 我可以看出问题所在。我不想删除该注释,因为我需要它。你的解决方案根本不是解决方案。

标签: hibernate jpa annotations many-to-one


【解决方案1】:

使用@JoinColumn(updatable = false) 代替@Column(updatable = false)

【讨论】:

  • 并非所有英雄都穿斗篷:D
  • 如果是@OneToMany 怎么办?
  • @OneToMany 将在关系的另一侧有连接列。
猜你喜欢
  • 2011-04-17
  • 1970-01-01
  • 2011-06-17
  • 2012-01-10
  • 2020-12-29
  • 2013-04-10
  • 2011-03-20
  • 2020-03-18
  • 2011-02-23
相关资源
最近更新 更多