自动将 `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 属于涉及外键的复合主键星座中的哪里?