【问题标题】:DateTime reference variable is never null but throws NullPointerExceptionDateTime 引用变量永远不会为空,但会引发 NullPointerException
【发布时间】:2017-10-03 18:53:06
【问题描述】:

我有这个实体:

@Entity
@Table( name = "conference" )
public class Conf implements Serializable {

  @Column( name = "start_date" )
  private DateTime                 startDate;

  @Column( name = "complete_date", unique = false, updatable = true )
  private DateTime             completeDate;

  @Column( name = "is_complet", length = 1, updatable = true, columnDefinition = "TINYINT(1)" )
  private Boolean              isComplete;

  public void setIsComplete( Boolean isComplete ) {
   System.out.println( "date is null ?" + this.completeDate == null ); //for verification
    this.isComplete = isComplete;
    this.completeDate = (this.isComplet == true && completeDate == null) ? new DateTime() : null; // null value is never assigned beccause by default completeDate seems to not be null
    this.startDate = this.completeDate != null ? new DateTime() : new DateTime( this.completeDate.getYear(), 1 + this.completeDate.getMonthOfYear(),
                    this.completeDate.getDayOfMonth(),
                    this.completeDate.getHourOfDay(),
                    this.completeDate.getMinuteOfHour() ); // this throws NPE
 }

问题出在上面的setter方法中。事实上,即使isComplete = truecompleteDate 也永远不会为空,当我这样检查时:System.out.println( "date is null ?" + this.completeDate == null ); 结果false。但是当我从completeDate调用任何方法时,我得到了一个N​​ullPointerException。奇怪的是,当我查看我的表 conference 时,complete_date 列为空。 即使我给它分配了一个空值:completeDate=null; 它也没有任何改变。

有什么问题?我哪里错了?我怎么能解决这个问题?非常感谢

【问题讨论】:

    标签: hibernate datetime nullpointerexception spring-data jodatime


    【解决方案1】:

    我认为你的逻辑倒退了。如果日期为空,则打印出来,而事实并非如此。因此,您实际上将其设置为 null,然后尝试对其调用方法。 => NPE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2015-03-04
      • 2012-03-13
      • 2016-02-22
      相关资源
      最近更新 更多