自动将 `insertable = false, updatable = false` 添加到 Netbeans 生成的实体

Posted

技术标签:

【中文标题】自动将 `insertable = false, updatable = false` 添加到 Netbeans 生成的实体【英文标题】:Automatically add `insertable = false, updatable = false` to Netbeans-generated entities 【发布时间】:2016-03-28 00:58:20 【问题描述】:

我正在使用 Netbeans 开发一个 Java EE 项目。我使用数据库自​​动生成了实体和 JPA 控制器。

我现在想通过添加更多表或更新现有表来更新数据库。我遇到的问题是我必须重新生成所有实体和 JPA 控制器——我不希望这样做,因为我的大多数实体都被修改为包含

insertable = false, updatable = false

在数据库使用current_timestamp@Column 中。如果我重新生成它们,我将不得不再次修改所有实体以包含 insertable = false, updatable = false

这就是我创作后想要达到的目标。

@Column(name = "CREATED_ON", insertable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date createdOn;

【问题讨论】:

通常,将 Hibernate 的属性 hibernate.hbm2ddl.auto 设置为 update 应该只更新检测到更改的架构,因此它应该可以解决您的问题。你可以试试这个方法吗? 我无法在我的项目中找到该属性 如果是这样,请在您的 persistence.xml 文件中包含以下行:<property name="hibernate.hbm2ddl.auto" value="update"/> 【参考方案1】:

您需要分两步完成,每一步都可以选择要创建的对象,如果选择正确,您将不会覆盖现有的类:

    从数据库生成实体 从实体类生成控制器

当我从现有表生成实体时,您可以选择要创建的表。只需执行此操作,不要选择现有的。右键单击项目并选择 New->other->Persistence(category)->Entity Classes From Database 我得到以下对话框:

然后,除了选择 JPA Controller Classes from Entity Classes

之外,做同样的事情

【讨论】:

这并没有回答自动将insertable = false, updatable = false添加到Entity中的current_timestamp变量的问题

以上是关于自动将 `insertable = false, updatable = false` 添加到 Netbeans 生成的实体的主要内容,如果未能解决你的问题,请参考以下文章

如何使用NodeJ从Postgres返回INSERT命令中的所有数据

请参考 JPA @Column 注释解释 insertable=false 和 updatable=false

Hibernate中“insertable = false”和“transient”之间的区别

Hibernate:insertable = false,updatable = false 属于涉及外键的复合主键星座中的哪里?

如何为单元测试覆盖 insertable=false

should be mapped with insert="false" update="false