我真的不知道该如何注解实际工作。我使用的是修订和访问用户(与eclipselink)在相同的课程,我...e.我得到类定义,这样的:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Channel")
@Entity
public class Channel extends NamedEntity {
    @XmlAttribute
    @XmlSchemaType(name = "anyURI")
    @Column(name="url")
    protected String url;

    @XmlAttribute
    @Column
    protected String coDirection;
    // etc...
}

现在我越来越奇怪的错误(例如"com.econemon.suite.common.models.Channel@115c974 是不是一个已知的实体类型",这通常意味着此类是不在我的persistence.xml)和我想知道,是否注释将妨碍每个其他的?

有帮助吗?

解决方案

注释不能干扰其他注释,尤其是如果来自不同的包装并且具有不同的名称。每个框架(JAXB和Hibernate)都有自己的注释。每个框架都只反省自己的注释。我非常肯定这不是问题所在。

请检查您的实体是否有这个:

a)没有参数构造函数(默认构造函数没问题,但如果你只有带参数的构造函数,你必须为JPA提供一个无参数构造函数,这可以是受保护的或包可见的....)

b)字段或getter上的@Id Annotation(我们总是使用基于字段的注释,否则永远不要将JPA getter注释与类型中的字段注释混合在一起!)

c)类型在您的持久性单元中,并且使用了持久性单元

d)该类型具有@Entity Annotation

如果您使用继承(扩展NamedEntity),您必须向JPA提供更多信息,告诉您如何映射它。首先尝试删除扩展NamedEntity的东西。而不是看一个很好的JPA教程,它解释了继承变体。

其他提示

没有,他们没有。

我删除了所有其他说明和切的遗产,并结束了一个非常简单的类。问题依然存在。

一件事情,并没有提到在我的员额(因为我认为这是不相关),我在这里面的一个访容器(菲利克斯如果该事项)下。现在,这样容器的不同的盾牌"捆绑"从每个其他,因此他们不能见其他人类直到你特别的"出口"的软件包。

附加说明的类坐在一个不同的束过我persistence.xml 我认为我可以只进口附加说明的类从另一捆做的持久性init的东西在其他地方。事实证明我不能,虽然我还没有真正理解为什么。

所以,如果你访问用户使用结合访束的,你要确保:

  • 附加说明的类和persistence.xml 是在同一束
  • 这束出口包含有附加说明的类
  • 在持久性单元(s)列于捆绑的清单文件

然后你可以做的实际持久性的事情(如呼叫。.持续存在)不同的束。

作为一个侧面说明,我得到了 同样奇怪的错误 当试图使用修订的注解跨束。看来,JAXBContext和/或ObjectFactory必须实例在同一捆包含附加说明的课程。我真的不能指甲下来,但把东西放在同一捆帮助。

这将是巨大的,如果有人有更深的了解访,类装载和注释可以评论什么可能会发生在这里。

更新:出口/进口的适当标注的软件包可能会使你有persistence.xml 和附加说明的类在不同的束,看到 在这里,.没有测试,虽然。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top