引用了未知实体:java.util.List。

4
有人能够建议我这里缺少了什么吗?在启动Dropwizard应用程序时出现错误。
错误信息:
web_1       | Exception in thread "main" org.hibernate.AnnotationException: @OneToOne or @ManyToOne on Resource.coordinates references an unknown entity: java.util.List
web_1       |   at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:97)
web_1       |   at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processEndOfQueue(InFlightMetadataCollectorImpl.java:1752)
web_1       |   at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processFkSecondPassesInOrder(InFlightMetadataCollectorImpl.java:1696)
web_1       |   at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1583)
web_1       |   at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)
web_1       |   at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
web_1       |   at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
web_1       |   at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
web_1       |   at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
web_1       |   at io.dropwizard.hibernate.SessionFactoryFactory.buildSessionFactory(SessionFactoryFactory.java:96)
web_1       |   at io.dropwizard.hibernate.SessionFactoryFactory.build(SessionFactoryFactory.java:49)
web_1       |   at io.dropwizard.hibernate.SessionFactoryFactory.build(SessionFactoryFactory.java:39)
web_1       |   at io.dropwizard.hibernate.HibernateBundle.run(HibernateBundle.java:62)
web_1       |   at io.dropwizard.hibernate.HibernateBundle.run(HibernateBundle.java:15)
web_1       |   at io.dropwizard.setup.Bootstrap.run(Bootstrap.java:200)
web_1       |   at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:42)
web_1       |   at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:85)
web_1       |   at io.dropwizard.cli.Cli.run(Cli.java:75)
web_1       |   at io.dropwizard.Application.run(Application.java:79)
web_1       |   at EdgeApplication.main(EdgeApplication.java:103)

资源类别:

@Data
@Entity
@Table(name="EDGE_RESOURCE")
public class Resource {
    ...

    @ManyToOne
    private List<Coordinate> coordinates;

    ...
}

参考坐标类

@Data
@Entity
@Table(name="EDGE_COORDINATE")
public class Coordinate {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private double
                latitude,
                longitude;
}

这是使用dropwizard和dropwizard-guice技术的内容。
public class EdgeApplication extends Application<EdgeConfiguration> {

    public static final HibernateBundle<EdgeConfiguration> hibernate = new HibernateBundle<EdgeConfiguration>(Coordinate.class, Session.class, Resource.class) {
        @Override
        public DataSourceFactory getDataSourceFactory(EdgeConfiguration configuration) {
            return configuration.getDatabase();
        }
    };

    @Override
    public void initialize(final Bootstrap<EdgeConfiguration> bootstrap) {
        bootstrap.addBundle(hibernate);

        ...
    }

    ...

}

6
你应该使用@OneToMany而不是@ManyToOne - Jesper
1
不用担心,你并不孤单! - Ian
@Jesper 那个方法可以,谢谢!我建议你把它作为答案发布出来。 - Line
1个回答

1

使用 @ManyToOne(targetEntity = Entity.class)


1
你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Diego Borba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接