Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate中的重复属性映射异常_Java_Hibernate_Hibernate Mapping - Fatal编程技术网

Java hibernate中的重复属性映射异常

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

我使用这个简单的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.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;
    }


}