【问题标题】:Issue with Hibernate 3 and Null values in DB数据库中 Hibernate 3 和 Null 值的问题
【发布时间】:2014-02-11 20:01:36
【问题描述】:

我在使用 Hibernate 3 时遇到了一个奇怪的问题,它的表具有空值。当我尝试从数据库中选择行时,出现以下异常:

空值被分配给原始类型设置器的属性。

最常见的解决方法似乎是将原始值更改为对象,事实是它们已经是对象。这是我的代码:

package model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
private long pk;
private Date instant;
private String server;
private String ucid;
private String routingVdn;
private String originalCli;
private String originalDnis;
private String terminatingStation;
private String terminatingAgent;
private Date phase1Instant;
private Integer phase1InternalResultCode;
private Integer phase1ExternalResultCode;
private String phase1Message;
private Date phase2Instant;
private Integer phase2InternalResultCode;
private Integer phase2ExternalResultCode;
private String phase2Message;

@Id
@Column( name = "PK")
@GeneratedValue(strategy=GenerationType.AUTO)
public long getPk() {
    return pk;
}
public void setPk(long pk) {
    this.pk = pk;
}


@Column( name = "Instant")
@Temporal(TemporalType.TIMESTAMP)
public Date getInstant() {
    return instant;
}
public void setInstant(Date instant) {
    this.instant = instant;
}

@Column( name = "Ucid")
public String getUcid() {
    return ucid;
}
public void setUcid(String ucid) {
    this.ucid = ucid;
}

@Column( name = "Routing_Vdn")
public String getRoutingVdn() {
    return routingVdn;
}
public void setRoutingVdn(String routingVdn) {
    this.routingVdn = routingVdn;
}

@Column( name = "Original_Cli")
public String getOriginalCli() {
    return originalCli;
}
public void setOriginalCli(String originalCli) {
    this.originalCli = originalCli;
}

@Column( name = "Original_Dnis")
public String getOriginalDnis() {
    return originalDnis;
}
public void setOriginalDnis(String originalDnis) {
    this.originalDnis = originalDnis;
}

@Column( name = "Terminating_Station")
public String getTerminatingStation() {
    return terminatingStation;
}
public void setTerminatingStation(String terminatingStation) {
    this.terminatingStation = terminatingStation;
}

@Column( name = "Terminating_Agent")
public String getTerminatingAgent() {
    return terminatingAgent;
}
public void setTerminatingAgent(String terminatingAgent) {
    this.terminatingAgent = terminatingAgent;
}
@Column(name = "Phase_1_Instant")
@Temporal(TemporalType.TIMESTAMP)
public Date getPhase1Instant() {
    return phase1Instant;
}
public void setPhase1Instant(Date phase1Instant) {
    this.phase1Instant = phase1Instant;
}

@Column(name = "Phase_1_Internal_Result_Code")
public Integer getPhase1InternalResultCode() {
    return phase1InternalResultCode;
}
public void setPhase1InternalResultCode(Integer phase1InternalResultCode) {
    this.phase1InternalResultCode = phase1InternalResultCode;
}

@Column(name = "Phase_1_External_Result_Code")
public Integer getPhase1ExternalResultCode() {
    return phase1ExternalResultCode;
}
public void setPhase1ExternalResultCode(int phase1ExternalResultCode) {
    this.phase1ExternalResultCode = phase1ExternalResultCode;
}

@Column(name = "Phase_1_Message")
public String getPhase1Message() {
    return phase1Message;
}
public void setPhase1Message(String phase1Message) {
    this.phase1Message = phase1Message;
}

@Column(name = "Phase_2_Instant")
@Temporal(TemporalType.TIMESTAMP)
public Date getPhase2Instant() {
    return phase2Instant;
}
public void setPhase2Instant(Date phase2Instant) {
    this.phase2Instant = phase2Instant;
}

@Column(name = "Phase_2_Internal_Result_Code")
public Integer getPhase2InternalResultCode() {
    return phase2InternalResultCode;
}
public void setPhase2InternalResultCode(Integer phase2InternalResultCode) {
    this.phase2InternalResultCode = phase2InternalResultCode;
}

@Column(name = "Phase_2_External_Result_Code")
public Integer getPhase2ExternalResultCode() {
    return phase2ExternalResultCode;
}
public void setPhase2ExternalResultCode(Integer phase2ExternalResultCode) {
    this.phase2ExternalResultCode = phase2ExternalResultCode;
}

@Column(name = "Phase_2_Message")
public String getPhase2Message() {
    return phase2Message;
}
public void setPhase2Message(String phase2Message) {
    this.phase2Message = phase2Message;
}

@Column(name = "Server")
public String getServer() {
    return server;
}
public void setServer(String server) {
    this.server = server;
}   
}

异常发生在数据库中为空的“phase1InternalResultCode”的设置器上。

我在 JBoss 5.1.0 中运行它并使用 Hibernate 3.6.0 Final

【问题讨论】:

    标签: hibernate null


    【解决方案1】:

    对于它的价值,我设法通过将注释放在变量上而不是 getter 上来实现这一点。

    这似乎工作正常,虽然我知道这不是最佳做法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      相关资源
      最近更新 更多