【问题标题】:Java netbeans persistence MysqlJava netbeans持久化Mysql
【发布时间】:2021-03-30 20:14:12
【问题描述】:

我正在尝试使用 Java 从 Netbeans 连接 Myqsl 数据库。我使用持久性。我设法创建持久性:我连接到数据库并从基础获取实体和 JPA 控制器,但在我的程序中我想记录、编辑或删除数据库中的数据,而这就是程序不起作用的地方.它直接进入 catch 并且不执行 try。

我使用 Netbeans 12.1、Mysql 8.0、Mysql 连接器 mysql-connector-java-8.0.22、JDK 13 和 EclipseLink 库 (JPA 2.1),但我无法写入数据库。我认为问题出在连接器上。我在 8.0.22 之前使用过很多版本,但同样的事情发生在我身上。我设法获得了该数据,但我无法修改数据库。这是persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
  xmlns="http://xmlns.jcp.org/xml/ns/persistence"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="OtraBasePU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/ladb?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>
      <property name="javax.persistence.jdbc.user" value="dferazo"/>
      <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
      <property name="javax.persistence.jdbc.password" value="dferazo1234"/>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

这是试图进行更改的文件,问题是它直接进入 cathc:

public class gestionAsignatura {

  private AsignaturaJpaController gestAsignatura = new AsignaturaJpaController();
  private Asignatura asignatura = new Asignatura();
  private String mensaje = "";

  public String insertarAsignatura(int id, String nombre, String codigo) {
    try {
      asignatura.setIdAsignatura(id);
      asignatura.setCodigoAsignatura(codigo);
      asignatura.setNombreAsignatura(nombre);

      gestAsignatura.create(asignatura);
      mensaje = "Se guardó.";
    } catch (Exception e) {
      System.out.println("Mensaje insertar: " + e.getMessage());
      mensaje = "No se guardó.";
    }

    return mensaje;
  }

  public String actualizarAsignatura(int id, String nombre, String codigo) {
    try {
      asignatura.setIdAsignatura(id);
      asignatura.setNombreAsignatura(nombre);
      asignatura.setCodigoAsignatura(codigo);

      gestAsignatura.edit(asignatura);
      mensaje = "Se actualizó.";
    } catch (Exception e) {
      System.out.println("Mensaje insertar: " + e.getMessage());
      mensaje = "No se actualizó.";
    }
    return mensaje;
  }

  public String eliminarAsignatura(int id) {
    try {
      gestAsignatura.destroy(id);
      mensaje = "Se eliminó";
    } catch (Exception e) {
      System.out.println("Mensaje eliminar: " + e.getMessage());
      mensaje = "No se eliminó";
    }
    return mensaje;
  }
}

它没有给我错误,但这会出现在控制台中:

run:
[EL Info]: 2020-12-20 19:24:16.005--ServerSession(341853399)--EclipseLink, version: Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd
[EL Info]: connection: 2020-12-20 19:24:16.43--ServerSession(341853399)--file:/C:/Users/cuera/Documents/NetBeansProjects/OtraBase/build/classes/_OtraBasePU login successful
[EL Warning]: metamodel: 2020-12-20 19:24:16.453--The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units. Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element
Mensaje insertar: Unknown entity bean class: class entidad.Asignatura, please verify that this class has been marked with the @Entity annotation.
No se guardó.
BUILD SUCCESSFUL (total time: 1 second)

这是文件结构:

【问题讨论】:

  • 连接器出现故障的可能性很小。相反,我认为问题在于您没有使用@Entity 注释标记实体类,或者您的persistence.xml 文件不正确......根据控制台上的消息。

标签: java mysql netbeans


【解决方案1】:

太感谢了。这是一个实体类,我有这个:

@Entity
@Table(name = "asignatura")
@NamedQueries({
    @NamedQuery(name = "Asignatura.findAll", query = "SELECT a FROM Asignatura a"),
    @NamedQuery(name = "Asignatura.findByIdAsignatura", query = "SELECT a FROM Asignatura a WHERE a.idAsignatura = :idAsignatura"),
    @NamedQuery(name = "Asignatura.findBySemestreAsignatura", query = "SELECT a FROM Asignatura a WHERE a.semestreAsignatura = :semestreAsignatura"),
    @NamedQuery(name = "Asignatura.findByHorasAsignatura", query = "SELECT a FROM Asignatura a WHERE a.horasAsignatura = :horasAsignatura"),
    @NamedQuery(name = "Asignatura.findByCreditosAsignatura", query = "SELECT a FROM Asignatura a WHERE a.creditosAsignatura = :creditosAsignatura")})
public class Asignatura implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "id_asignatura")
    private Integer idAsignatura;
    @Lob
    @Column(name = "codigo_asignatura")
    private String codigoAsignatura;
    @Lob
    @Column(name = "nombre_asignatura")
    private String nombreAsignatura;
    @Column(name = "semestre_asignatura")
    private Integer semestreAsignatura;
    @Column(name = "horas_asignatura")
    private Integer horasAsignatura;
    @Column(name = "creditos_asignatura")
    private Integer creditosAsignatura;
    @Lob
    @Column(name = "dependencia_asignatura")
    private String dependenciaAsignatura;
    @JoinColumn(name = "id_carrera", referencedColumnName = "id_carrera")
    @ManyToOne
    private Carrera idCarrera;

    public Asignatura() {
    }

    public Asignatura(Integer idAsignatura) {
        this.idAsignatura = idAsignatura;
    }

    public Integer getIdAsignatura() {
        return idAsignatura;
    }

    public void setIdAsignatura(Integer idAsignatura) {
        this.idAsignatura = idAsignatura;
    }

    public String getCodigoAsignatura() {
        return codigoAsignatura;
    }

    public void setCodigoAsignatura(String codigoAsignatura) {
        this.codigoAsignatura = codigoAsignatura;
    }

    public String getNombreAsignatura() {
        return nombreAsignatura;
    }

    public void setNombreAsignatura(String nombreAsignatura) {
        this.nombreAsignatura = nombreAsignatura;
    }

    public Integer getSemestreAsignatura() {
        return semestreAsignatura;
    }

    public void setSemestreAsignatura(Integer semestreAsignatura) {
        this.semestreAsignatura = semestreAsignatura;
    }

    public Integer getHorasAsignatura() {
        return horasAsignatura;
    }

    public void setHorasAsignatura(Integer horasAsignatura) {
        this.horasAsignatura = horasAsignatura;
    }

    public Integer getCreditosAsignatura() {
        return creditosAsignatura;
    }

    public void setCreditosAsignatura(Integer creditosAsignatura) {
        this.creditosAsignatura = creditosAsignatura;
    }

    public String getDependenciaAsignatura() {
        return dependenciaAsignatura;
    }

    public void setDependenciaAsignatura(String dependenciaAsignatura) {
        this.dependenciaAsignatura = dependenciaAsignatura;
    }

    public Carrera getIdCarrera() {
        return idCarrera;
    }

    public void setIdCarrera(Carrera idCarrera) {
        this.idCarrera = idCarrera;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idAsignatura != null ? idAsignatura.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Asignatura)) {
            return false;
        }
        Asignatura other = (Asignatura) object;
        if ((this.idAsignatura == null && other.idAsignatura != null) || (this.idAsignatura != null && !this.idAsignatura.equals(other.idAsignatura))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entidad.Asignatura[ idAsignatura=" + idAsignatura + " ]";
    }
    
}

我不明白错误在哪里......我个人认为persistence.xml没问题,因为是的,我可以从数据库中获取数据来创建JPA实体和控制器......但也许有一些东西错了……

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多