找不到类型为com.models.entities.OrderEntity的属性

时间:2013-04-05 23:05:09

标签: java spring log4j

我收到错误No property u found for type com.models.entities.OrderEntity并且在我的生命中无法弄清楚如何调试它的来源。我猜测有一些不正确的映射。

我尝试启用log4j,其中只提供org.hibernate的详细信息。我尝试添加其他软件包,但它们没有被阅读。我相信我的log4j.properties位于正确的位置。

enter image description here

log4j.properties内容:

log4j.rootCategory=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c:%L - %m%n

log4j.category.org.springframework.data=DEBUG,stdout
log4j.category.com.models.entities =DEBUG,stdout

我该怎么做才能确保log4j正在记录正确的软件包?

我的实体:

@Entity
@Table(name = "`Order`")
@NamedQueries({
        @NamedQuery(name="Order.findByUUID", query="SELECT o FROM OrderEntity o WHERE o.uuid = :uuid"),
        @NamedQuery(name="Order.findByInProduction", query="SELECT o FROM OrderEntity o WHERE o.inProduction = :inProduction")
})
public class OrderEntity {
    private Integer id;

    @javax.persistence.Column(name = "id", nullable = false, insertable = true, updatable = true, length = 10, precision = 0)
    @GeneratedValue
    @Id
    public Integer getId() {
        return id;
    }

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

    private String uuid;

    @javax.persistence.Column(name = "uuid", nullable = false, insertable = true, updatable = true, length = 128, precision = 0)
    @Basic
    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    private Boolean inProduction;

    @javax.persistence.Column(name = "in_production", nullable = false, insertable = true, updatable = true, length = 0, precision = 0)
    @Basic
    public Boolean getInProduction() {
        return inProduction;
    }

    public void setInProduction(Boolean inProduction) {
        this.inProduction = inProduction;
    }

    private Timestamp updated;

    @javax.persistence.Column(name = "updated", nullable = true, insertable = true, updatable = true, length = 19, precision = 0)
    @Basic
    public Timestamp getUpdated() {
        return updated;
    }

    public void setUpdated(Timestamp updated) {
        this.updated = updated;
    }

    private Timestamp created;

    @javax.persistence.Column(name = "created", nullable = false, insertable = true, updatable = true, length = 19, precision = 0)
    @Basic
    public Timestamp getCreated() {
        return created;
    }

    public void setCreated(Timestamp created) {
        this.created = created;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        OrderEntity that = (OrderEntity) o;

        if (created != null ? !created.equals(that.created) : that.created != null) return false;
        if (id != null ? !id.equals(that.id) : that.id != null) return false;
        if (inProduction != null ? !inProduction.equals(that.inProduction) : that.inProduction != null) return false;
        if (updated != null ? !updated.equals(that.updated) : that.updated != null) return false;
        if (uuid != null ? !uuid.equals(that.uuid) : that.uuid != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = id != null ? id.hashCode() : 0;
        result = 31 * result + (uuid != null ? uuid.hashCode() : 0);
        result = 31 * result + (inProduction != null ? inProduction.hashCode() : 0);
        result = 31 * result + (updated != null ? updated.hashCode() : 0);
        result = 31 * result + (created != null ? created.hashCode() : 0);
        return result;
    }

    private VendorEntity vendor;

    @ManyToOne
    @javax.persistence.JoinColumn(name = "vendor_id", referencedColumnName = "id", nullable = false)
    public VendorEntity getVendor() {
        return vendor;
    }

    public void setVendor(VendorEntity vendor) {
        this.vendor = vendor;
    }

    private ShippingDestinationEntity shippingDestination;

    @ManyToOne
    @javax.persistence.JoinColumn(name = "shipping_destination_id", referencedColumnName = "id", nullable = false)
    public ShippingDestinationEntity getShippingDestination() {
        return shippingDestination;
    }

    public void setShippingDestination(ShippingDestinationEntity shippingDestination) {
        this.shippingDestination = shippingDestination;
    }

    private Collection<OrderCustomFieldEntity> orderCustomFields;

    @OneToMany(mappedBy = "order")
    public Collection<OrderCustomFieldEntity> getOrderCustomFields() {
        return orderCustomFields;
    }

    public void setOrderCustomFields(Collection<OrderCustomFieldEntity> orderCustomFields) {
        this.orderCustomFields = orderCustomFields;
    }

    private Collection<ProductEntity> products;

    @OneToMany(mappedBy = "order")
    public Collection<ProductEntity> getProducts() {
        return products;
    }

    public void setProducts(Collection<ProductEntity> products) {
        this.products = products;
    }
}

堆栈跟踪:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property u found for type com.models.entities.OrderEntity
    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:353)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:271)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:245)
    at org.springframework.data.repository.query.parser.Part.<init>(Part.java:72)
    at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:180)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:260)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:240)
    at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:71)
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:57)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:90)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:162)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:279)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:147)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:153)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:43)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
    ... 26 more

更新:我刚从数据库中删除并重新生成了实体,但仍然收到同样的错误。

2 个答案:

答案 0 :(得分:2)

事实证明,问题是由与我的存储库层的冲突引起的。尽管我有一个Order.findByUUID命名查询,而我的OrderRepository看起来像:

@Repository
public interface OrderRepository extends JpaRepository<OrderEntity, Integer> {
    OrderEntity findByUUID(@Param("uuid") String uuid);

    List<OrderEntity> findByInProduction(@Param("inProduction") Boolean inProduction);
}

删除命名查询并将上述方法更改为findByUuid是解决方案。我仍然不确定它为什么失败,但这让我摆脱了问题并开始调试应用程序。

答案 1 :(得分:1)

堆栈跟踪显示您有一个JPQL查询(repository.query.parser行),其中包含类似.u的某些对象上的OrderEntity。 也许对.u.u<space>的文字搜索会帮助您发现问题?

它不必在OrderEntity类本身。