2014-10-20 3 views
0

Мой Arquillian не может разворачиваться при добавлении класса сущности в WebArchice, когда я переопределяю объектыи hashcode.Arquillian Не удалось развернуть Override equals и hashcode

среда

  • TomEE 1.7.1
  • arquillian-tomee встраиваемый 1.7.1
  • arquillian-JUnit-контейнер 1.1.5.Final
  • org.hibernate 4.1.4.Final

Ниже класс сущности:

@Entity 
public class Property implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "ID") 
    private Long id; 
    @Column(name = "PROP_NAME", nullable = false, unique = true) 
    private String name; 
    private String description; 
    private boolean isModifiable; 
    @Column(name = "PROP_VALUE", nullable = false) 
    private String value; 

    public Property() { 
    } 

    public Property(Long id, String name, boolean isModifiable, String value) { 
     this.id = id; 
     this.name = name; 
     this.isModifiable = isModifiable; 
     this.value = value; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public boolean isIsModifiable() { 
     return isModifiable; 
    } 

    public void setIsModifiable(boolean isModifiable) { 
     this.isModifiable = isModifiable; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    @Override 
    public boolean equals(Object obj) { 
     if (obj == null) { 
      return false; 
     } 

     if (getClass() != obj.getClass()) { 
      return false; 
     } 

     final Property other = (Property) obj; 
     if (!this.id.equals(other.id)) { 
      return false; 
     } 

     if (!this.name.equals(other.name)) { 
      return false; 
     } 

     if (!this.value.equals(other.value)) { 
      return false; 
     } 

     if ((this.description == null ? other.description != null : !this.description.equals(other.description))) { 
      return false; 
     } 

     return this.isModifiable == other.isModifiable; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 3; 
     hash = 97 * hash + (id == null ? 0 : (int) (this.id^(this.id >>> 32))); 
     hash = 97 * hash + Objects.hashCode(this.name); 
     hash = 97 * hash + Objects.hashCode(this.description); 
     hash = 97 * hash + (this.isModifiable ? 1 : 0); 
     hash = 97 * hash + Objects.hashCode(this.value); 
     return hash; 
    } 
} 

Вот как я добавляю класс к классу WebArchice.

WebArchive webArchive = ShrinkWrap.create(WebArchive.class); 
webArchive.addClasses(Property.class); 

Когда я извлекаю equals и hashcode методы из моего Property класса, развернутой в Arquillian.

Как я могу заставить Аркиллиан работать с классом, который преодолел методы equals и hashcode?

ответ

0

Решение было следующим для меня, чтобы заставить его работать.

При переопределении методов equals и hashcode методы доступа к переменным класса напрямую не передаются. Используйте методы геттера для доступа к ним с equals и hashcode.

После того как я изменил способ доступа к переменным с equals и hashcode, Arquillian успешно развертывает класс.