java如果长时间不起作用

时间:2011-01-08 17:30:45

标签: java hibernate if-statement long-integer

我来到这里真的很奇怪。我有2节课。

  
@Entity
public class CategoryData extends EntityData {
    public Long parentId;

    @Column(unique=true)
    public String name;
    public Picture picture;
}
  
@Entity
public class PropertyGroupData extends EntityData {
    public Long categoryId;
    public String adminDescription;
    public String title;
    @ManyToMany(fetch=FetchType.EAGER)
    public List properties = new LinkedList();

}

这是我的hibernate的实体类。

 
@MappedSuperclass
public class EntityData implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long id;
    @Temporal(TemporalType.TIMESTAMP)
    public Date created = new Date();
    @Temporal(TemporalType.TIMESTAMP)
    public Date modified = new Date();

    public Long version =  0L;
    // W:waiting,A:active,D:deleted
    public Character status;

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE);
        //return "EntityData[id=" + id + "]";
    }
}

情况来了。我在我的数据库中获得了一些数据并且效果很好。直到现在。


for(CategoryData c:kategoriler)
    if(pgd.categoryId.toString().equals(c.id.toString()))
        out.print("1-find equal "+c.id);
for(CategoryData c:kategoriler)
    if(pgd.categoryId==c.id)
        out.print("2-find equal "+c.id);

第一个for循环正常工作并打印1-find equal 7但第二个循环不打印任何东西。他们都很长。我做错了什么?

3 个答案:

答案 0 :(得分:4)

表达式为Long类型,它是一个类,因此通过引用标识进行比较。如果他们是long,那就没问题。试试这个:

for(CategoryData c:kategoriler)
    if(pgd.categoryId.longValue() == c.id.longValue())
        out.print("2-find equal "+c.id);

答案 1 :(得分:1)

您正在通过引用比较2个对象。也就是说,您正在检查它们是否是对同一对象的引用。你想要的是检查它们是否具有相同的值,例如

if(pgd.categoryId.longValue() == c.id.longValue())

答案 2 :(得分:1)

由于Long会覆盖.equals,因此您可以使用.equals()方法,就像使用字符串一样。

for(CategoryData c:kategoriler)
{
  if (pgd.categoryId.equals(c.id))
  {
      out.print("2-find equal "+c.id);
  }
}

使用==只比较对象引用。