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

EclipseLink-非实体作为关系属性中的目标实体

蒲深
2023-03-14

我使用的是Netbeans IDE 8.0.2和eclipselink 2.5.2。下面是打开连接时出现的异常,问题是这种情况并不是每次都发生。异常“Departmento”中描述的实体完全遵循其他类的模式,即我们的系统已经包含大约500个实体类,只有在新的类中才发生此异常。这个实体是由Netbeans的“实体类从数据库”选项生成的,并添加到持久化XML...

由:javax.Persistence.persistenceException:Exception[EclipseLink-28018](Eclipse Persistence.Exceptions.EntityManagerSetupException异常描述:PersistenceUnit[totemPU]预部署失败。内部异常:异常[EclipseLink-7250](Eclipse Persistence Services-2.5.2.v20140319-9AD6ABD):org.Eclipse.Persistence.exceptions.validationException异常描述:[class entidade.item]在关系属性[field departamento]中使用非实体[class entidade.departamento]作为目标实体。

实体部门

@Entity
@Table(name = "departamento")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Departamento.findAll", query = "SELECT d FROM Departamento d"),
@NamedQuery(name = "Departamento.findById", query = "SELECT d FROM Departamento d WHERE   d.departamentoPK.id = :id"),
@NamedQuery(name = "Departamento.findByIdEmpresa", query = "SELECT d FROM Departamento d WHERE d.departamentoPK.idEmpresa = :idEmpresa"),
@NamedQuery(name = "Departamento.findByDescricao", query = "SELECT d FROM Departamento d WHERE d.descricao = :descricao"),
@NamedQuery(name = "Departamento.findByLixo", query = "SELECT d FROM Departamento d WHERE d.lixo = :lixo"),
@NamedQuery(name = "Departamento.findByIp", query = "SELECT d FROM Departamento d WHERE d.ip = :ip")})
public class Departamento implements Serializable {

private static final long serialVersionUID = 1L;
@EmbeddedId
protected DepartamentoPK departamentoPK;
@Basic(optional = false)
@Column(name = "descricao")
private String descricao;
...
Getters() and Setters()

实体项目

@Entity
@Table(name = "item")
public class Item implements Serializable {

@EmbeddedId
protected ItemPK itemPK;
@JoinColumns({
    @JoinColumn(name = "departamento_id", referencedColumnName = "id"),
    @JoinColumn(name = "departamento_id_empresa", referencedColumnName = "id_empresa")})
@ManyToOne(optional = true)
private Departamento departamento;
...
Getters() and Setters()

persistence.xml

<persistence-unit name="totemPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>entidade.Departamento</class>
<class>entidade.item</class>
... More classes ...
<properties>
  <property name="javax.persistence.jdbc.url" value="jdbc:mysql://xxx"/>
  <property name="javax.persistence.jdbc.password" value="xxx"/>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  <property name="javax.persistence.jdbc.user" value="xxx"/>
  <property name="javax.persistence.jdbc.autoReconnect" value="true"/>
  <property name="eclipselink.logging.session" value="false"/>
  <property name="eclipselink.logging.level" value="OFF"/>
  <property name="eclipselink.weaving" value="static"/>
  <property name="eclipselink.query-results-cache" value="false"/>
</properties>

在同一个persistence.xml中有三个以上的持久化单元。

共有1个答案

刘博文
2023-03-14

当我忘记在persistence.xml中添加另一个实体试图使用的类时,我通常会看到这个错误。确保为创建EntityManagerFactory而传入的持久化单元名称是所需的名称(totemPU)。它似乎使用了一个持久化单元,其中包括Entidade.Item,但不包括Entidade.DepartaMento。

 类似资料:
  • 我得到了以下异常,并且在此之前已经执行了1000次,但现在我得到了错误: ValidationException异常说明:[class Com.SmartPhoneDev.RSVPLaw.Entities.Staff]将非实体[class Com.SmartPhoneDev.RSVPLaw.Entities.Address]用作关系属性[字段地址]中的目标实体。 以下是所讨论的实体。有人能帮我找出

  • 我对Meal和MealGroup之间的关系有问题。Hibernate返回给我:"mappdBy引用未知的目标实体属性"。我有两个实体: 我尝试删除@Join Column和mappedBy。已创建其他表,但我想加入该列。 和 谢谢你的帮助。

  • 我有一个名为的实体,它与另一个实体有关系,该实体可以为null。这两个实体如下: 项目 类别 现在,我必须选择具有类似于搜索词的名称、代码或类别名称的项,对此我尝试了以下查询:

  • 关联实体和关联关系属性有什么区别?在我的一本名为《现代数据库管理》(Hoffer,第11版)的书中,作者陈述了两者之间的区别。然而,它并没有真正解释为什么会有差别,相反,它只是给出了它们是如何不同的例子。 据我所知,一个有一个属性关联的关系是一个关联关系属性,并用一条虚线表示一个圆角矩形,该矩形内有该属性。而关联实体是描述关系的多个属性。两者都只能用于ER图解中的多对多关系。我的思维过程正确吗?

  • 早上好 我正在使用ModelMapper将DTO映射到实体,反之亦然,与此相关,我有一个问题。 1)当我从SonController获取SonDTO时,我需要将长的motherId映射到实体Son,但在那里我有实体mothermother来建立关系,它在内部有id。那么我如何将这个SonDTO motherId映射到实体mothermother中,反之亦然? 类以下:

  • 我使用Spring Data Neo4J 5.0.10与Spring Boot 2.0.5。节点I具有以下2个实体,用户兴趣实体和用户兴趣实体的关系。 这很有效。我可以创建一个新用户并将该用户与userInterest关联。当我再次发送相同的详细信息时,节点和边不会重复。 当我在关系实体中启用权重属性时,即使权重属性值相同,关系似乎也是重复的。 我记得我读到过,只要属性相同,就不应该创建另一种关系