PropertyNotFoundException:找不到setter

时间:2016-10-17 20:36:07

标签: java hibernate jpa

假设我有这样的实体:

public class Foo {

  private long id;
  private List<Bar> list = new ArrayList<>();

  public long getId() {
     return id;
  }

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

  public List<Bar> getList() {
     return list;
  }

  public void setList(List<Bar> list) {
     this.list = list;
  }

  /** helper method*/
  public boolean isEmpty(){
     return list.isEmpty();
  }
}

相应的实体映射:

 <?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm"
                     version="2.1">

    <entity class="Foo">
     <table name="foo"/>
     <attributes>
       <id name="id"/>
        <one-to-many name="list">
          <!-- ... -->
        </one-to-many>
        <transient name="isEmpty"/>
     </attributes>
    </entity>

</entity-mappings>

我得到了这个例外:org.hibernate.PropertyNotFoundException: Could not locate setter method for property [Foo#empty]
我发现了一个类似的帖子 - HIbernate Mapping Exception: PropertyNotFoundException: Could not find a setter,并且这种方法的Trainsient注释有所帮助。

1 个答案:

答案 0 :(得分:1)

通过指定<transient name="isEmpty"/>,您尝试向JPA提供程序发出信号,告知您有一个名为isEmpty的瞬态属性。您的属性实际上名为empty,而不是isEmpty,错误消息也表明(Foo#empty)。将相应的XML标记替换为<transient name="empty"/>