【问题标题】:What is the use of @Entity annotation when entity not included in persistence unit当实体不包含在持久性单元中时,@Entity 注释的用途是什么
【发布时间】:2012-10-13 05:02:41
【问题描述】:

在我正在构建的示例应用程序中,我几乎没有 JPA 注释实体类,并且几乎所有实体类都在持久性单元中指定,由 JPA 提供者管理。

对于那些被注释但不包含在persistence.xml中的实体:

  1. 实体注解有什么用?
  2. 它们是否仍映射到数据库中的表?
  3. 由于它们不由提供者管理,我如何使用这些实体来持久化数据?

感谢任何答案以澄清我的理解。

【问题讨论】:

    标签: java jpa persistence entity


    【解决方案1】:

    JPA 将在持久性管理设置中包含任何带有 @Entity 注释的类。如果使用注解,则不需要persistence.xml

    干杯,

    【讨论】:

    • 在persistence.xml中删除对持久单元中实体类的任何引用后,应用程序遇到异常:Exception in thread "main" java.lang.IllegalArgumentException: NamedQuery of name: Article.findByArticleid not found.
    • 听起来你在persistence.xml 中有一个命名查询,使用@NamedQuery 注释将其移动到@Entity。一般来说,如果您希望不使用 persistence.xml 中的任何内容,都应该将其转换为基于注释的配置。
    • 按照@datanucleus 的建议,在persistence.xml 中的<persistence-unit> 中添加<exclude-unlisted-classes>false</exclude-unlisted-classes> 元素后起作用
    【解决方案2】:

    JPA 自动扫描带有 @Entity 注释的类并包含它们。

    【讨论】:

    • 不一定。取决于“exclude-unlisted-classes”以及是使用 J2EE 还是 J2SE。
    • 是的,是的。感谢您添加评论。
    猜你喜欢
    • 2013-10-16
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2011-08-09
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多