我有一个抽象类和 2 个继承自它的类。这个类有一个抽象方法
@Transient
public abstract String getFullName();
此方法不应映射到数据库中。但是它导致了一个问题,因为我无法运行我的应用程序。如果我删除它一切正常。那么我如何告诉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)时出错:构造服务'HibernateSessionSource ':调用构造函数公共 org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl(org.slf4j.Logger,java.util.List) 时出错:无法实例化默认 tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
下划线的原因
引起:在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:57) 的 java.lang.reflect.InvocationTargetException: 45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:105) ... 87 更多原因:org.hibernate。 PropertyNotFoundException: 在 org.hibernate.property.BasicPropertyAccessor 的 org.hibernate.property.BasicPropertyAccessor.createSetter(BasicPropertyAccessor.java:262) 类 com.bomahabo.flow.domain.project.shot.ShotComponent 中找不到属性 fullName 的设置器.getSetter(BasicPropertyAccessor.java:255) at org.hibernate.mapping.Property.getSetter(Property.java:309) at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertySetter(PojoEntityTuplizer.java:304) at org.hibernate.tuple .entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:156) 在 org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:77) ... 92 更多
有任何想法吗?