为什么 JPA\Hibernate 不自动创建此映射字段?
Why JPA\Hibernate don't automatically create this mapped field?
我正在开发一个使用 JPA\Hibernate 的 Java 网络应用程序,但我不太喜欢这项技术。
所以我有以下问题:我有一个名为 ReaDichiarazioneIntento 的 model class 映射到数据库 table 名为 REA_DICHIARAZIONE_INTENTO.
像这样:
@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
...................................................................
...................................................................
...................................................................
}
我的老板对我说我必须添加一个新字段并将其映射到这个 table,所以我添加了这个字段(添加它以及相关的 getter 和 setter 方法到前面的 class) 中,将此代码添加到前面的 class:
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 会自动将此字段创建到我的 table。
我没有收到任何错误,但在我的 table 内部查看,我找不到 DATA_TRASMISSIONE_ADE 列。
为什么在我将其映射到我的模型 class 之后 JPA\Hibernate 没有自动创建此列?可能是什么问题呢?我错过了什么?
Tnx
你能post你的persistence.xml吗?
它应该包括这样的东西
属性 名称="javax.persistence.schema-generation.database.action" 值="create"
或删除并创建,但如果删除所有表,您将丢失所有数据
您还可以放置一个@Temporal 注释,以便更好地映射到日期字段的数据库
我正在开发一个使用 JPA\Hibernate 的 Java 网络应用程序,但我不太喜欢这项技术。
所以我有以下问题:我有一个名为 ReaDichiarazioneIntento 的 model class 映射到数据库 table 名为 REA_DICHIARAZIONE_INTENTO.
像这样:
@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
...................................................................
...................................................................
...................................................................
}
我的老板对我说我必须添加一个新字段并将其映射到这个 table,所以我添加了这个字段(添加它以及相关的 getter 和 setter 方法到前面的 class) 中,将此代码添加到前面的 class:
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 会自动将此字段创建到我的 table。
我没有收到任何错误,但在我的 table 内部查看,我找不到 DATA_TRASMISSIONE_ADE 列。
为什么在我将其映射到我的模型 class 之后 JPA\Hibernate 没有自动创建此列?可能是什么问题呢?我错过了什么?
Tnx
你能post你的persistence.xml吗?
它应该包括这样的东西
属性 名称="javax.persistence.schema-generation.database.action" 值="create"
或删除并创建,但如果删除所有表,您将丢失所有数据 您还可以放置一个@Temporal 注释,以便更好地映射到日期字段的数据库