Java @枚举类型的公式导致Hibernate 4.2.8.Final中的ClassCastException
我正在尝试将Java @枚举类型的公式导致Hibernate 4.2.8.Final中的ClassCastException,java,hibernate,enums,formula,Java,Hibernate,Enums,Formula,我正在尝试将@公式映射到Hibernate 4.2.8.Final中的枚举值 但是,我遇到以下ClassCastException: java.lang.ClassCastException: org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column at org.hibernate.mapping.SimpleValue.createParameterImpl(SimpleValue.ja
@公式
映射到Hibernate 4.2.8.Final中的枚举值
但是,我遇到以下ClassCastException:
java.lang.ClassCastException: org.hibernate.mapping.Formula cannot be cast to org.hibernate.mapping.Column
at org.hibernate.mapping.SimpleValue.createParameterImpl(SimpleValue.java:499)
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:324)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310)
at org.hibernate.mapping.Property.isValid(Property.java:241)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496)
at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1358)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849)
at org.hibernate.testing.junit4.BaseCoreFunctionalTestCase.buildSessionFactory(BaseCoreFunctionalTestCase.java:149)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.hibernate.testing.junit4.TestClassMetadata.performCallbackInvocation(TestClassMetadata.java:205)
... 15 more
这是我的代码:
// Read-only property
private FooBarEnum foo = FooBarEnum.DEFAULT;
// Calculate value of property
@Formula("(SELECT MIN(A.foobar) AS MIN_FOO FROM table_b B JOIN table_a A ON B.fk_bar=A.id WHERE B.id=id)")
@Enumerated(EnumType.STRING)
public FooBarEnum getFooBarEnum() {
return this.foo;
}
我发现它描述了完全相同的问题。该错误已修复,但我无法更新到4.2.16+
有什么变通方法可以让我的@Formula
和enum getter在Hibernate 4.2.8.Final上工作吗?
这是Hibernate中的错误代码:
private void createParameterImpl() {
try {
String[] columnsNames = new String[columns.size()];
for ( int i = 0; i < columns.size(); i++ ) {
columnsNames[i] = ( (Column) columns.get( i ) ).getName(); // <- This cast fails
}
...
private void createParameterImpl(){
试一试{
String[]columnsNames=新字符串[columns.size()];
对于(int i=0;i