Java hibernate中的重复属性映射异常
我使用这个简单的Hibernate映射xml来创建一个实体Java hibernate中的重复属性映射异常,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,我使用这个简单的Hibernate映射xml来创建一个实体 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <hibernate-mapping> <class entity-name="FirstTestType"> <property column="createdOn" name="java.sql.Timestamp" type="java.sql.Times
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<hibernate-mapping>
<class entity-name="FirstTestType">
<property column="createdOn" name="java.sql.Timestamp" type="java.sql.Timestamp"/>
<id column="id" name="id" type="java.lang.Long">
<generator class="identity"/>
</id>
<property column="modifiedOn" name="java.sql.Timestamp" type="java.sql.Timestamp"/>
<property column="testString" length="100" name="java.lang.String" type="java.lang.String"/>
<property column="testInt" name="int" type="int"/>
<property column="testBoolean" name="boolean" type="boolean"/>
<property column="testLong" name="long" type="long"/>
</class>
</hibernate-mapping>
当我尝试创建一个sessionfactory时,我遇到了这个异常
org.hibernate.MappingException: Duplicate property mapping of java.sql.Timestamp found in FirstTestType
at org.appops.entityStore.hibernate.session.HibernateSessionFactoryProvider.setupSchemaSessionFactory(HibernateSessionFactoryProvider.java:78)
at org.appops.entityStore.hibernate.session.HibernateSessionFactoryProviderTest.testSessionCreation(HibernateSessionFactoryProviderTest.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.hibernate.MappingException: Duplicate property mapping of java.sql.Timestamp found in FirstTestType
at org.hibernate.mapping.PersistentClass.checkPropertyDuplication(PersistentClass.java:483)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:473)
at org.hibernate.mapping.RootClass.validate(RootClass.java:235)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1362)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1865)
at org.appops.entityStore.hibernate.session.HibernateSessionFactoryProvider.setupSchemaSessionFactory(HibernateSessionFactoryProvider.java:74)
... 11 more
您能帮我找出映射xml的错误吗?在属性中更改名称
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<hibernate-mapping>
<class entity-name="FirstTestType">
<property column="createdOn" name="nameCreatedOn" type="java.sql.Timestamp"/>
<id column="id" name="id" type="java.lang.Long">
<generator class="identity"/>
</id>
<property column="modifiedOn" name="nameModifiedOn" type="java.sql.Timestamp"/>
<property column="testString" length="100" name="nameTestString" type="java.lang.String"/>
<property column="testInt" name="nameTestInt" type="int"/>
<property column="testBoolean" name="nameTestBoolean" type="boolean"/>
<property column="testLong" name="nameTestLong" type="long"/>
</class>
</hibernate-mapping>
您不应该这样命名属性。您的意思是列名和属性名不能相同吗?如果是,原因是什么?如果不是,列和名称属性之间的显著性差异是什么?TIAcolumnName正在查找hibernate.hbm.xml文件。PropertyName是控制器的映射,因为@RequestParam我没有使用Spring或其他任何东西,所以@RequestParam没有任何意义。你能用更多类似hibernate的解释来解释吗?好的,我会像java项目一样解释。让我们认为hibernate映射是您的db示例。当您进行这个hibernate映射时,您必须创建一个类,该类将所有列名作为私有变量包含在类中(使用getter和setter)。该属性名是类变量名。所以简单地说,hibernate需要我们指定单独的属性名和列名。第二次运行时,我意识到我在属性命名方面的错误。。它们看起来像一种类型。我解决了这个问题并解决了会话创建问题
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<hibernate-mapping>
<class entity-name="FirstTestType">
<property column="createdOn" name="nameCreatedOn" type="java.sql.Timestamp"/>
<id column="id" name="id" type="java.lang.Long">
<generator class="identity"/>
</id>
<property column="modifiedOn" name="nameModifiedOn" type="java.sql.Timestamp"/>
<property column="testString" length="100" name="nameTestString" type="java.lang.String"/>
<property column="testInt" name="nameTestInt" type="int"/>
<property column="testBoolean" name="nameTestBoolean" type="boolean"/>
<property column="testLong" name="nameTestLong" type="long"/>
</class>
</hibernate-mapping>
package basari.util;
public class FirstTestType {
private Date nameCreatedOn;
private int nameId;
private String nameModifiedOn;
private String nameTestString;
private int nameTestInt;
private Boolean nameTestBoolean;
private Long nameTestLong;
public FirstTestType(){
}
public Date getNameCreatedOn() {
return nameCreatedOn;
}
public void setNameCreatedOn(Date nameCreatedOn) {
this.nameCreatedOn = nameCreatedOn;
}
public int getNameId() {
return nameId;
}
public void setNameId(int nameId) {
this.nameId = nameId;
}
public String getNameModifiedOn() {
return nameModifiedOn;
}
public void setNameModifiedOn(String nameModifiedOn) {
this.nameModifiedOn = nameModifiedOn;
}
public String getNameTestString() {
return nameTestString;
}
public void setNameTestString(String nameTestString) {
this.nameTestString = nameTestString;
}
public int getNameTestInt() {
return nameTestInt;
}
public void setNameTestInt(int nameTestInt) {
this.nameTestInt = nameTestInt;
}
public Boolean getNameTestBoolean() {
return nameTestBoolean;
}
public void setNameTestBoolean(Boolean nameTestBoolean) {
this.nameTestBoolean = nameTestBoolean;
}
public Long getNameTestLong() {
return nameTestLong;
}
public void setNameTestLong(Long nameTestLong) {
this.nameTestLong = nameTestLong;
}
}