【问题标题】:Why JPA\Hibernate don't automatically create this mapped field?为什么 JPA\Hibernate 不会自动创建此映射字段?
【发布时间】:2015-09-10 21:46:45
【问题描述】:

我正在开发一个使用 JPA\Hibernate 的 Java Web 应用程序,但我不太喜欢这项技术。

所以我有以下问题:我有一个名为 ReaDichiarazioneIntentomodel 类,它映射到名为 REA_DICHIARAZIONE_INTENTO 的数据库表。 p>

类似这样的:

@javax.persistence.IdClass(it.enel.wearea.entity.ReaDichiarazioneIntentoPK.class)
@javax.persistence.Table(name = "REA_DICHIARAZIONE_INTENTO", schema = "EDIWEA")
@Entity
public class ReaDichiarazioneIntento implements Cloneable {

    private Integer idDichiarazione;

    @javax.persistence.Column(name = "ID_DICHIARAZIONE")
    @Id
    public Integer getIdDichiarazione() {
        return idDichiarazione;
    }

    public void setIdDichiarazione(Integer idDichiarazione) {
        this.idDichiarazione = idDichiarazione;
    }
    ...................................................................
    ...................................................................
    ...................................................................
    SOME OTHER FIELDS AND RELATED GETTER AND SETTER METHODS
    ...................................................................
    ...................................................................
    ...................................................................

}

老板对我说我要在这个表中添加和映射一个新字段,所以我添加了这个字段(将它和相关的getter和setter方法添加到上一个类中),将这段代码添加到上一个类:

private Date dataTrasmissioneAde;

@javax.persistence.Column(name = "DATA_TRASMISSIONE_ADE")
@Basic
public Date getDataTrasmissioneAde() {
    return dataTrasmissioneAde;
}

public void setDataTrasmissioneAde(Date dataTrasmissioneAde) {
    this.dataTrasmissioneAde = dataTrasmissioneAde;
}

他对我说,重启应用服务器,Hibernate 会自动在我的表中创建这个字段。

我没有收到任何错误,但在我的表中我找不到 DATA_TRASMISSIONE_ADE 列。

在我将它映射到我的模型类之后,为什么 JPA\Hibernate 没有自动创建此列?可能是什么问题呢?我错过了什么?

Tnx

【问题讨论】:

  • 老大怎么说,明明知道怎么弄的? :) 你应该检查hbm2ddl 是否正确配置和触发。

标签: java hibernate jakarta-ee jpa hibernate-mapping


【解决方案1】:

你能发布你的 persistence.xml 吗?

它应该包括这样的东西

属性名称="javax.persistence.schema-generation.database.action" value="create"

或删除并创建,但如果删除所有表,您将丢失所有数据 您还可以添加@Temporal 注释,以便更好地映射到日期字段的数据库

【讨论】:

  • 这不是生产环境的解决方案,dev是可以的
猜你喜欢
  • 2021-09-15
  • 2012-03-07
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
相关资源
最近更新 更多