java - 实体映射中的重复列,oneToMany 关系

标签 java mysql hibernate intellij-idea

我正在尝试在两个表之间建立一对多关系。我有一个名为 users 的表,其中包含许多 user_history 条目。我在 mysql 中定义了这些表,并使用 intellij hibrernate 支持生成了实体。问题是,当我想在数据库中插入某些内容时,我收到以下错误实体映射中的重复列:com.UserHistoryEntity

用户:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

    <class name="com.UsersEntity" table="users" schema="" catalog="protein_tracker">
        <id name="id">
            <column name="id" sql-type="int" not-null="true"/>
        </id>
        <property name="name">
            <column name="name" sql-type="varchar" length="45" not-null="true"/>
        </property>
        <property name="total">
            <column name="total" sql-type="int" not-null="true"/>
        </property>
        <property name="goal">
            <column name="goal" sql-type="int" not-null="true"/>
        </property>
        <set name="userHistoriesById" inverse="true">
            <key>
                <column name="id_user" not-null="true"/>
            </key>
            <one-to-many not-found="ignore" class="com.UserHistoryEntity"/>
        </set>
    </class>
</hibernate-mapping>

用户历史记录:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>

    <class name="com.UserHistoryEntity" table="user_history" schema="" catalog="protein_tracker">
        <id name="id">
            <column name="id" sql-type="int" not-null="true"/>
        </id>
        <property name="entryDate">
            <column name="entry_date" sql-type="datetime" not-null="true"/>
        </property>
        <property name="entry">
            <column name="entry" sql-type="varchar" length="45" not-null="true"/>
        </property>
        <property name="idUser">
            <column name="id_user" sql-type="int" not-null="true"/>
        </property>
        <many-to-one name="usersByIdUser" class="com.UsersEntity">
            <column name="id_user" not-null="true"/>
        </many-to-one>
    </class>
</hibernate-mapping>

如何解决这个问题?

最佳答案

将 usersByIdUser 的多对一映射标记为 insertable = false 和 updatetable = false。这使得关系只能由您映射的单个属性 idUser 进行管理。

关于java - 实体映射中的重复列,oneToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620815/

相关文章:

java - 使用Java优化内存中的JPG图像

java - 创建表用户 ("user_id int auto_increment");不在 Derby 中工作(嵌入式数据库)

java - 配置 hyperjaxb 以创建 hibernate 映射和 mysql 数据库

java - hibernate 级联删除,为什么不删除外键?

hibernate - PostgreSQL 中 from dual 的等价性

java - 使用 Maven 将 jar 文件从一个项目复制到另一个项目

Java客户端服务器安全通信

java - 如何在一个Java项目中使用多个版本的Jersey(1.8.x和2.15)?

php - Angular 2 : Send data to MySQL with php file

mysql - 从 where 子句中的给定集合中选择表中不存在的 ID