neo4j::Getting java.lang.IllegalArgumentException:Class com.my.domain.Actor不是有效的实体类。请检查实体映射

neo4j::Getting java.lang.IllegalArgumentException:Class com.my.domain.Actor不是有效的实体类。请检查实体映射,java,neo4j,neo4j-ogm,Java,Neo4j,Neo4j Ogm,我曾试图学习Neo4j OGM(版本:3.1.0)。但我遇到了这个例外。即使尝试了较旧的版本,但没有任何用处。我在谷歌上寻求帮助,但找不到任何东西。Neo4j是我项目的唯一选择。我没有发现我的代码有任何错误。有人能帮我吗?谢谢:)这是我的密码……很抱歉问了这么长的问题 @NodeEntity(label="Film") public class Movie { @GraphId Long id; @Property(name="title") private St

我曾试图学习Neo4j OGM(版本:3.1.0)。但我遇到了这个例外。即使尝试了较旧的版本,但没有任何用处。我在谷歌上寻求帮助,但找不到任何东西。Neo4j是我项目的唯一选择。我没有发现我的代码有任何错误。有人能帮我吗?谢谢:)这是我的密码……很抱歉问了这么长的问题

@NodeEntity(label="Film")
public class Movie {
    @GraphId
    Long id;
    @Property(name="title")
    private String name;
    public Movie(String name){
        this.name=name;
    }
    public Movie(){}       
}

@NodeEntity
public class Actor  {
    @Id
    @GeneratedValue
    private Long id;
    @Property(name="name")
    private String fullName;

    @Relationship(type="ACTED_IN", direction=Relationship.OUTGOING)
    private List<Role> filmography;

    public Actor(String name){
        this.fullName=name;
        this.filmography=new ArrayList<>();
    }
    public Actor(){}
    public void addRole(Role r){
        this.filmography.add(r);
    }        
}

@RelationshipEntity(type="ACTED_IN")
public class Role {
    @Id @GeneratedValue  private Long relationshipId;
    @Property            private String title;
    @StartNode           private Actor actor;
    @EndNode             private Movie movie;
    public Role(){}
    public Role(String title,Actor actor,Movie movie){
        this.actor=actor;
        this.title=title;
        this.movie=movie;
    }
}
public class Main{
   public static void main(String[] a){
        Movie m1=new Movie("M1");
        Actor a1=new Actor("A1");
        Actor a2=new Actor("A2");
        Movie m2=new Movie("M2");
        Role r1=new Role("R1",a1,m1);
        Role r2=new Role("R2",a2,m1);
        Role r3=new Role("R3",a2,m2);
        a1.addRole(r1);
        a2.addRole(r2);
        a2.addRole(r3);
        Configuration configuration = new Configuration.Builder()
            .uri("bolt://localhost")
            .credentials("neo4j", "admin")
            .build();
        SessionFactory sessionFactory = new SessionFactory(configuration, "com.my.domain");
        Session session=sessionFactory.openSession();
        session.beginTransaction();
        session.save(a1);
        session.save(a2);
 }
}
@NodeEntity(label=“Film”)
公映{
@格拉希德
长id;
@财产(name=“title”)
私有字符串名称;
公共电影(字符串名称){
this.name=name;
}
公共电影(){}
}
@节点性
公共级演员{
@身份证
@生成值
私人长id;
@属性(name=“name”)
私有字符串全名;
@关系(type=“ACTED_IN”,direction=Relationship.OUTGOING)
私人名单从影记录;
公共参与者(字符串名称){
this.fullName=name;
this.filmography=新ArrayList();
}
公共参与者(){}
公共无效添加角色(角色r){
本。从影记录。添加(r);
}        
}
@RelationshipEntity(type=“ACTED_IN”)
公共阶级角色{
@Id@GeneratedValue private Long relationshipId;
@财产所有权;
@StartNode私人演员;
@EndNode私人电影;
公共角色(){}
公共角色(字符串标题、演员、电影){
这个。演员=演员;
这个.title=title;
这个。电影=电影;
}
}
公共班机{
公共静态void main(字符串[]a){
电影m1=新电影(“m1”);
演员a1=新演员(“a1”);
演员a2=新演员(“a2”);
电影m2=新电影(“m2”);
角色r1=新角色(“r1”,a1,m1);
角色r2=新角色(“r2”,a2,m1);
角色r3=新角色(“r3”,a2,m2);
a1.添加角色(r1);
a2.addRole(r2);
a2.addRole(r3);
Configuration=new Configuration.Builder()
.uri(“bolt://localhost")
.证书(“neo4j”、“管理员”)
.build();
SessionFactory SessionFactory=newsessionfactory(配置为“com.my.domain”);
Session Session=sessionFactory.openSession();
session.beginTransaction();
session.save(a1);
session.save(a2);
}
}

尝试检查类actor的bean是否正确加载到spring上下文中。如果由于错误的配置(例如:@EntityScan未使用正确的路径定义),在运行时上下文中不存在该异常,则可能会发生此异常。

尝试检查spring上下文中是否正确加载了类actor的bean。如果由于配置错误(例如:@EntityScan未使用正确的路径定义),在运行时它不在上下文中,则可能发生此异常。

请在SessionFactory中检查包扫描,例如new SessionFactory(配置,“com.my.domain”)


如果声明的包不是您的实体包,则也会发生此错误

在SessionFactory中检查您的包扫描,例如new SessionFactory(配置,“com.my.domain”)


如果声明的包不是您的实体包,则也会发生此错误

要扫描包的包有键入错误,或者
Actor
类是另一个包。它在我的机器上运行没有任何问题(也适用于OGM 3.1.0)。不,您可以在问题标题中看到Actor类的限定名称,其中清楚地提到了“com.my.domain.Actor”,这让我很困惑。即使包名正确,我也会遇到这个异常。我假设您的代码都在一个应用程序中,对吗?因此不存在“域项目”或类似的内容(?),因为您的示例也是从简单的main方法中启动的,类加载不会有任何问题。不,实体也在同一个项目中(但在不同的“包”中)作为主类。@Vinay Nagraj实际上我正在开发一个需要neo4j数据库的Intellij IDE插件。要使用注释将POJO存储在neo4j中,它需要一个默认的类加载器。但在我的例子中,Intellij使用自己的类加载器,无法使用neo4j注释,因为无法从库中创建类的对象。要扫描包的包有打字错误,或者
Actor
类是另一个包。它在我的机器上运行没有任何问题(也适用于OGM 3.1.0)。不,您可以在问题标题中看到Actor类的限定名称,其中清楚地提到了“com.my.domain.Actor”,这让我很困惑。即使包名正确,我也会遇到这个异常。我假设您的代码都在一个应用程序中,对吗?因此不存在“域项目”或类似的内容(?),因为您的示例也是从简单的main方法中启动的,类加载不会有任何问题。不,实体也在同一个项目中(但在不同的“包”中)作为主类。@Vinay Nagraj实际上我正在开发一个需要neo4j数据库的Intellij IDE插件。要使用注释在neo4j中存储POJO,它需要一个默认的类加载器。但在我的例子中,Intellij使用它自己的类加载器,它不能使用neo4j注释,因为无法从库中创建类的对象。