在src / test /中的IntelliJ Idea JPA实体

时间:2014-04-17 11:02:43

标签: java hibernate jpa intellij-idea entity

我在src / test / java中创建了一个仅用于测试的实体。看来IntelliJ IDEA并没有认识到它。当我试图写一个查询时,Intellij并没有将该类视为一个实体,我无法写出" select * from" - 它标志着该类不存在。

我已经尝试直接在persistence.xml中映射该类,但是它也不起作用(IntlliJ仍然无法识别它,并且在persistence.xml中我必须将其标记为纯文本或IntelliJ也会将其标记为错误。)

此外,在我在src / main中的所有实体中,我可以看到它映射的符号:

然而,src / test中的那个不是:

编辑:

我使用的是JPA facet,而不是Hibernate(需要hibernate.cfg.xml而不是persistence.xml),并且只允许添加一个persistence.xml文件

2 个答案:

答案 0 :(得分:1)

要识别,您需要为scr/test文件夹设置IDEA Facets。转到Project Structure -> Facets并在Descriptions设置路径persistence.xml

enter image description here

但是你不需要创建实体进行测试。您应该为存储在src/main/java/...文件夹中的实体创建测试用例。

更新

enter image description here

答案 1 :(得分:0)

想出来并回答后代:

正如@ dozortsev-anton所提到的,我们需要src/test/resources中的另一个xml文件 - 但不是另一个具有不同持久性单元的persistence.xml,我们需要一个实际的orm.xml来映射实体:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
                 version="2.0">

    <entity class="my.wonderful.class">
        <table name="TABLE_NAME" />
    </entity>

</entity-mappings>

请注意,只需编写<entity>节点(内部没有table元素)就足以让IntelliJ IDEA将类识别为实体并开始自动完成使用此类的查询。但是,列名称将无法识别:

(在你徘徊时,你会得到&#34;无法解决列......&#34;错误)。 table元素将解决此问题 - 通过将实体映射到表(与@Table注释中的表相同),所有错误都将消失。