hibernate 没有为本机映像应用程序的实体指定标识符

a0zr77ik  于 2022-11-30  发布在  其他
关注(0)|答案(2)|浏览(123)

我有一个带有@Id注解的字段id的实体:

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

@Entity
@Table(name = "orders")
@Data
@SuperBuilder
@NoArgsConstructor
public class Order {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
}

当我使用mvn mn:run运行应用程序时,一切正常。但如果使用mvn package -Dpackaging=native-image构建应用程序,然后运行构建的应用程序,我会收到一个错误:
org.hibernate.AnnotationException: No identifier specified for entity: Order
微型版本:2.3.4、微卫星数据版本:2.2.4

w8biq8rn

w8biq8rn1#

尝试将路径添加到pom.xml

<path>
   <groupId>io.micronaut</groupId>
   <artifactId>micronaut-graal</artifactId>
   <version>${micronaut.version}</version>
</path>

添加Lombok时

1sbrub3j

1sbrub3j2#

我在将我的应用程序构建为 Native-image 时遇到了同样的问题。
解决了这做的两件事情:
1.使id字段成为公共字段(而不是private

@Id
public Long id;
  • 向***pom.xml***添加***注解处理器***,以便GraalVM构建具有反射的本机映像(如Micronaut文档中所指定)
  • 因此,将此代码添加到 pom.xml
<annotationProcessorPaths> 
  ...
    <path>
      <groupId>io.micronaut</groupId>
      <artifactId>micronaut-graal</artifactId>
      <version>3.7.4</version>
    </path>
  ... 
 </annotationProcessorPaths>

注意事项:

  • 请确保id字段上没有缺少@Id注解
  • 请确保@Id注解是使用以下命令导入的:
import javax.persistence.Id;

相关问题