2014-02-26 55 views
8

我有兩個POJO,STOCK和STOCK_DETAILS(一對多關係)。 另外我有一個接口IAUDITLOG(有兩種方法)。我需要用BOTH POJO來實現這個接口,並且希望在這些方法中編寫一些實現。但是,當我實現與子類 「STOCKDETAILS」 IAUDITLOG接口則提供了異常 「你應該有setter屬性」HIbernate映射異常:PropertyNotFoundException:無法找到setter

股票類:

@Entity 
@Table(name = "stock") 
public class Stock implements java.io.Serializable, IAuditLog 
{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "id") 
    private Integer stockId; 

    @Column(name = "STOCK_CODE") 
    private String stockCode; 

    @Column(name = "STOCK_NAME") 
    private String stockName; 

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "stock") 
    public Set<StockDetail> stockDetails = new HashSet<StockDetail>(0); 


    public Set<StockDetail> getStockDetails() { 
     return stockDetails; 
    } 

    public void setStockDetails(Set<StockDetail> stockDetails) { 
     this.stockDetails = stockDetails; 
    } 

    public Integer getStockId() { 
     return stockId; 
    } 

    public void setStockId(Integer stockId) { 
     this.stockId = stockId; 
    } 

    public String getStockCode() { 
     return stockCode; 
    } 

    public void setStockCode(String stockCode) { 
     this.stockCode = stockCode; 
    } 

    public String getStockName() { 
     return stockName; 
    } 

    public void setStockName(String stockName) { 
     this.stockName = stockName; 
    } 

// overridded methods of IAUDITLOG interface 
    public int getLogId() { 

     return stockId; 
    } 
    public String getLogDetail() {  
     return "some implementaion"; 
    } 
} 

庫存詳細CLASS

@Entity 
@Table(name = "StockDetail") 
public class StockDetail implements Serializable, IAuditLog { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private Integer recordId; 
    private Stock stock; 
    private Float priceOpen; 


    @Id 
    @GeneratedValue 
    @Column(name = "RECORD_ID", unique = true, nullable = false) 
    public Integer getRecordId() { 
     return this.recordId; 
    } 

    public void setRecordId(Integer recordId) { 
     this.recordId = recordId; 
    } 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "STOCK_ID", nullable = false) 
    public Stock getStock() { 
     return this.stock; 
    } 

    public void setStock(Stock stock) { 
     this.stock = stock; 
    } 

    @Column(name = "PRICE_OPEN", precision = 6) 
    public Float getPriceOpen() { 
     return this.priceOpen; 
    } 

    public void setPriceOpen(Float priceOpen) { 
     this.priceOpen = priceOpen; 
    } 

    //overriddded methods of IADUTILOG inteface 
    public int getLogId() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    public String getLogDetail() { 
     // TODO Auto-generated method stub 
     return "some implementation"; 
    } 
} 

IAUDITLOg接口:

public interface IAuditLog { 
    public int getLogId(); 
    public String getLogDetail(); 
} 

堆棧跟蹤:

Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister 
    at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:185) 
    at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:385) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1760) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1798) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:247) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:373) 
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:358) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509) 
    ... 46 more 
Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] 
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:138) 
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) 
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:341) 
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:507) 
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:146) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) 
    ... 55 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135) 
    ... 64 more 
Caused by: org.hibernate.PropertyNotFoundException: Could not find a setter for property logDetail in class com.auditLog.common.StockDetail 
    at org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:252) 
    at org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:245) 
    at org.hibernate.mapping.Property.getSetter(Property.java:326) 
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:444) 
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:201) 
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82) 
    ... 69 more 

Feb 26, 2014 10:17:08 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet dispatcher 
org.hibernate.PropertyNotFoundException: Could not find a setter for property logDetail in class com.auditLog.common.StockDetail 
    at org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:252) 
    at org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:245) 
    at org.hibernate.mapping.Property.getSetter(Property.java:326) 
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:444) 
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:201) 
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135) 
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) 
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:341) 
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:507) 
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:146) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 

任何人都可以請讓我知道,有什麼問題?爲什麼我應該爲那些不屬於該類的屬性創建getter和setter,而是從其他接口實現。 僅供參考......當我使用父類「STOCK」實現此接口時,此工作正常

回答

2

對於其他遇到此問題的人以及上述解決方案不起作用,我的錯誤是我的二傳手名稱不正確;它與它所設置的屬性不匹配。這就是全部

相關問題