gpt4 book ai didi

java - Hibernate 4.1 错误 : Could not create DynamicParameterizedType for type: org. hibernate.type.EnumType

转载 作者:行者123 更新时间:2023-12-01 05:09:45 26 4
gpt4 key购买 nike

我正在尝试将我的项目从 hibernate 3.6 升级到 4.1.6,我认为我已经将所有 jar 放在正确的位置,...等等,但现在我在谷歌搜索下面遇到了这个异常,但没有给出答案。我的代码在 Hibernate 3.6 上运行良好,我不确定这是否是我的映射问题或其他问题。我正在使用 JPA 方法配置 Hibernate 4.1 和 Spring 3.1.2。

Caused by: org.hibernate.MappingException: Could not create DynamicParameterizedType for type: org.hibernate.type.EnumType
at org.hibernate.mapping.SimpleValue.createParameterImpl(SimpleValue.java:398)
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:304)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:294)
at org.hibernate.mapping.Property.isValid(Property.java:238)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:469)
at org.hibernate.mapping.RootClass.validate(RootClass.java:270)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1294)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1738)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
... 55 more
Caused by: java.lang.ClassNotFoundException: char
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:192)
at org.hibernate.mapping.SimpleValue.createParameterImpl(SimpleValue.java:389)
... 64 more

更新:我在捕获异常的 hibernate 代码中放置了断点,并发现了它不喜欢的映射,如下所示。

@Entity
@Table(name = "company_addresses")
public class CompanyAddress extends TimeStampedPersistableObject
{
public enum AddressType
{
PUBLIC('p'), SHAREHOLDER('s');

private final char typeCode;

AddressType(char typeCode)
{
this.typeCode = typeCode;
}

public static AddressType parse(char c)
{
for (AddressType addressType : AddressType.values())
{
if (addressType.value() == c)
{
return addressType;
}
}
return null;
}

public char value()
{
return typeCode;
}
}

@Column(name = "address_type")
@Enumerated(EnumType.STRING)
private char type;

最佳答案

事实证明,我有一个额外的@Enumerated,hibernate 3.6 忽略了它,这让 hibernate 4.1 感到困惑

@Column(name = "address_type")
@Enumerated(EnumType.STRING)
private char type;

我忘记了这个字段上的@Enumerated,该字段具有 char 类型,但 setter 和 getter 使用正确的 Enum。删除 @Enumerated 解决了这个问题,这是我的映射中的一个错误。

Hibernate 4.1 无法指示表名和列名,这使得找出导致问题的映射有点困难。

关于java - Hibernate 4.1 错误 : Could not create DynamicParameterizedType for type: org. hibernate.type.EnumType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12182586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com