如何告诉hibernate忽略抽象方法

时间:2012-05-31 11:14:33

标签: hibernate inheritance mapping transient

我有一个抽象类和2个继承它的类。这个类有一个抽象方法

@Transient
public abstract String getFullName();

此方法不应映射到db。但是它导致了一个问题,因为我无法运行我的应用程序。如果我删除它一切正常。那么我如何告诉hibernate忽略这个方法。

两个类中的实现方法相同

@Transient
@Override
public String getFullName() {
    return this.getShot().getFullName() + "/" + this.getName();
}

抽象类是这样注释的

@Entity
@Table(name = "Components")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "Type", discriminatorType = DiscriminatorType.STRING)

其他注释在getter方法上,它们工作正常。如果我删除不应该放入db的抽象方法(因此是瞬态的)它一切正常。所以我的问题在于上面的这个抽象方法

给我的错误是

java.lang.RuntimeException:异常构造服务'ValueEncoderSource':调用服务贡献方法的错误org.apache.tapestry5.hibernate.HibernateModule.contributeValueEncoderSource(MappedConfiguration,boolean,HibernateSessionSource,Session,TypeCoercer,PropertyAccess,LoggerSource):异常构造service'HibernateSessionSource':调用构造函数public时出错org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl(org.slf4j.Logger,java.util.List):无法实例化默认tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]

强调原因

引起: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)     在java.lang.reflect.Constructor.newInstance(Constructor.java:525)     在org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:105)     ......还有87个 引起:org.hibernate.PropertyNotFoundException:无法在类com.bomahabo.flow.domain.project.shot.ShotComponent中找到属性fullName的setter     在org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:262)     在org.hibernate.property.BasicPropertyAccessor.getSetter(BasicPropertyAccessor.java:255)     在org.hibernate.mapping.Property.getSetter(Property.java:309)     在org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:304)     在org.hibernate.tuple.entity.AbstractEntityTuplizer。(AbstractEntityTuplizer.java:156)     在org.hibernate.tuple.entity.PojoEntityTuplizer。(PojoEntityTuplizer.java:77)     ... 92更多

有什么想法吗?

0 个答案:

没有答案