当前位置: 首页 > 知识库问答 >
问题:

嵌入式类抛出错误中的重复列

胡璞瑜
2023-03-14

我已经使用JPA工具创建了实体类,它已经为没有主键的表创建了两个类。一个是@Entity类,另一个是@嵌入式类,下面是两个类的代码

乡村语言

package com.geolocation.entities;

import java.io.Serializable;
import javax.persistence.*;


/**
 * The persistent class for the countrylanguage database table.
 * 
 */
@Entity
@NamedQuery(name="Countrylanguage.findAll", query="SELECT c FROM Countrylanguage c")
public class Countrylanguage implements Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private CountrylanguagePK id;


    private String isOfficial;

    private String language;


    private float percentage;

    //bi-directional many-to-one association to Country
    
    @ManyToOne
    @JoinColumn(name="CountryCode")
    private Country country;

    public Countrylanguage() {
    }

//  public CountrylanguagePK getId() {
//      return this.id;
//  }
//
//  public void setId(CountrylanguagePK id) {
//      this.id = id;
//  }

    public String getIsOfficial() {
        return this.isOfficial;
    }

    public void setIsOfficial(String isOfficial) {
        this.isOfficial = isOfficial;
    }


    public String getLanguage() {
        return this.language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public float getPercentage() {
        return this.percentage;
    }

    public void setPercentage(float percentage) {
        this.percentage = percentage;
    }

    

    public Country getCountry() {
        return this.country;
    }

    public void setCountry(Country country) {
        this.country = country;
    }

}

**CountrylanguagePK**

package com.geolocation.entities;

import java.io.Serializable;
import javax.persistence.*;

/**
 * The primary key class for the countrylanguage database table.
 * 
 */
@Embeddable
public class CountrylanguagePK implements Serializable {
    //default serial version id, required for serializable classes.
    private static final long serialVersionUID = 1L;

    @Column(insertable=false, updatable=false)
    private String countryCode;

    private String language;

    public CountrylanguagePK() {
    }
    public String getCountryCode() {
        return this.countryCode;
    }
    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }
    public String getLanguage() {
        return this.language;
    }
    public void setLanguage(String language) {
        this.language = language;
    }

    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (!(other instanceof CountrylanguagePK)) {
            return false;
        }
        CountrylanguagePK castOther = (CountrylanguagePK)other;
        return 
            this.countryCode.equals(castOther.countryCode)
            && this.language.equals(castOther.language);
    }

    public int hashCode() {
        final int prime = 31;
        int hash = 17;
        hash = hash * prime + this.countryCode.hashCode();
        hash = hash * prime + this.language.hashCode();
        
        return hash;
    }
}

执行时会抛出错误。。

  1. org.springframework.beans.factory.BeanCreationExctive:创建名为entityManagerFactory的bean时出错,该bean在类路径资源[org/springFramework/boot/autoconfiure/orm/jpa/HibernateJpaConfiguration.class]中定义:调用init方法失败;嵌套异常javax.persistence.持久性异常:[PeristenceUnit:默认]无法构建HiberNate SessionFactory;嵌套异常org.hibernate.映射异常:实体映射中的重复列:com.geolocation.entities.CountryLanguage列:country_code(应映射为插入="false"更新="false")
  2. 起因:javax.persistence.PeristenceExctive:[PeristenceUnit:默认]无法构建HibernateSessionFactory;嵌套异常org.hibernate.MappingExctive:实体映射中的重复列:com.geolocation.entities.CountryLanguage列:country_code(应映射为插入=假更新=假)
  3. 原因:org.hibernate.映射异常:实体映射中的重复列:com.geolocation.entities.CountryLanguage列:country_code(应映射为插入=假更新=假)

共有1个答案

贾飞章
2023-03-14

嵌入类型不应使用insertable=false,updateable=false,而应使用@manytone关联的@JoinColumn

 类似资料:
  • 我最近刚开始使用kotlin进行android开发,所以在android studio也是一个彻头彻尾的傻瓜。我正在尝试构建一个超级简单的HelloWorld应用程序,但出现了以下错误: 现在必须显式声明注释处理器。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到annotationProcessor配置中。-jetified-kotlin-compiler-embeddeble-1.3

  • 我有个问题- 我需要换个场景。我在主文件中拥有的阶段和根场景: 同样我有控制器,有登录按钮。只有(找到用户)才会登录,并且场景必须更改为主场景: 这给了我一个错误: 错误线114为 我刚来Java,所以我真不明白为什么会这样。不管怎么说都是求救。

  • 问题内容: 我正在运行Hibernate 4.2.6.Final / JPA2,并尝试具有@Embeddable对象的@ElementCollection列表,这些对象本身包含String的@ElementCollection列表。 但是,hibernate在尝试实例化EntityManager时抛出ConcurrentModificationException,我根本不了解。 如果我注释掉in

  • 第一次安装熊猫时,网络出现故障并显示一些错误。当我再次尝试时,我得到以下错误。我用pip安装的任何其他东西都成功了,除了熊猫。

  • Spring Boot:2.0.3.发布 kafka.kafka-streams:1.0.0 这看起来像是版本不匹配,但我不清楚我应该对我做什么。

  • 我目前正试图将我的版本化脚本精简为一个基线脚本(我们不为flyway付费,所以这很痛苦)。所以我删除了我的模式,并试图运行我的一个大脚本,它包含了我所拥有的一切。我从我的DBeaver客户端导出了DDL。然而,当启动我的应用程序时,我得到了这个错误: 我认为这个错误是因为可重复脚本在版本控制之前运行,而版本控制脚本创建了所有的表。我的理解是flyway最后运行可重复脚本。我是不是丢了什么东西还是什