gpt4 book ai didi

java - 无法实例化默认 tuplizer : HIbernate

转载 作者:行者123 更新时间:2023-11-30 02:51:00 25 4
gpt4 key购买 nike

我用复合键编写了示例 hibernate 应用程序,如下所示:当我尝试运行应用程序来创建表时出现以下错误。我是 hibernate 新手。谁能让我知道我在这里缺少什么。

产品.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="str.Product" table="products">

<composite-id name="id" class="Ptr">
<key-property name="productId" type="int">
<column name="productId" />
</key-property>
<key-property name="price" type="int">
<column name="Price" />
</key-property>

</composite-id>

<property name="proName" column="pname" length="10" />


</class>

产品.java

package str;

import javax.persistence.Transient;

public class Product implements java.io.Serializable{

private static final long serialVersionUID = 1L;
private Ptr id;
private String proName;

public void setProName(String proName)
{
this.proName = proName;
}

public String getProName()
{
return proName;
}

public Product(Ptr id, String proName) {
super();
this.id = id;
this.proName = proName;
}

public Product() {

}

public Ptr getId() {
return id;
}

public void setId(Ptr id) {
this.id = id;
}

}

Ptr.java

package str;

public class Ptr {

private int productId;
private double price;

public Ptr(){}

public Ptr(int productId, double price) {
super();
this.productId = productId;
this.price = price;
}

public int getProductId() {
return productId;
}

public void setProductId(int productId) {
this.productId = productId;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

}

错误:

INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Exception in thread "main" org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.component.PojoComponentTuplizer]
at org.hibernate.tuple.component.ComponentTuplizerFactory.constructTuplizer(ComponentTuplizerFactory.java:101)
at org.hibernate.tuple.component.ComponentTuplizerFactory.constructDefaultTuplizer(ComponentTuplizerFactory.java:122)
at org.hibernate.tuple.component.ComponentMetamodel.<init>(ComponentMetamodel.java:81)
at org.hibernate.mapping.Component.getType(Component.java:180)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310)
at org.hibernate.mapping.RootClass.validate(RootClass.java:271)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1358)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849)
at org .hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928)
at com.cisco.common.ForOurLogic4Load.main(ForOurLogic4Load.java:14)
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.component.ComponentTuplizerFactory.constructTuplizer(ComponentTuplizerFactory.java:98)
... 9 more
Caused by: org.hibernate.MappingException: component class not found: Ptr
at org.hibernate.mapping.Component.getComponentClass(Component.java:141)
at org.hibernate.tuple.component.PojoComponentTuplizer.buildGetter(PojoComponentTuplizer.java:155)
at org.hibernate.tuple.component.AbstractComponentTuplizer.<init>(AbstractComponentTuplizer.java:64)
at org.hibernate.tuple.component.PojoComponentTuplizer.<init>(PojoComponentTuplizer.java:59)
... 14 more
Caused by: java.lang.ClassNotFoundException: Ptr
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)`enter code here`
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:191)
at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:193)
at org.hibernate.mapping.Component.getComponentClass(Component.java:138)
... 17 more

最佳答案

您没有使用类的完整路径,并且您得到

java.lang.ClassNotFoundException: Ptr

请在您的映射文件中使用它:

<composite-id name="id" class="str.Ptr">

关于java - 无法实例化默认 tuplizer : HIbernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38665601/

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