Intellij IDEA:指定JPA验证的数据源

Pie*_*nry 38 java spring jpa intellij-idea

我有一个Spring项目,用于在Intellij IDEA中设置的小型Web应用程序.

它在Hibernate之上使用JPA作为持久层.数据源(MySQL)在Spring应用程序上下文中定义:

    <!-- Values are configured via the property override -->
    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" >
        <property name="driverClassName" value=""/>
        <property name="url" value=""/>
        <property name="username" value=""/>
        <property name="password" value=""/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

实际值从属性文件中读取,并在Spring运行时使用属性覆盖机制注入.

然后将数据源注入到同一应用程序上下文中的实体管理器工厂中:

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
    </bean>
Run Code Online (Sandbox Code Playgroud)

最后,实体管理器使用注释注入DAO:

/**
 * Shared, thread-safe proxy for the actual transactional EntityManager
 */
@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)

当我构建并部署到Tomcat时,一切正常,但Intellij的JPA验证似乎并不了解从何处获取数据源.

在我的实体中,表的名称和列的名称用红色下划线,验证消息是"无法解析表"或"无法解析列":

@Entity
@Table(name = "domain")
public class Domain extends AbstractAgendaEntity {
Run Code Online (Sandbox Code Playgroud)

在这个例子中,它"domain"是不被认为有效的部分.

我已经在"数据库"工具窗口中手动配置了我的数据库,我可以在控制台中看到我的表并执行SQL查询.

如何告诉Intellij使用此数据源来解析JPA实体的表名?

Pie*_*nry 110

我终于找到了如何做到这一点.

关键是"持久性"工具窗口.显然,在添加JPA构面后它可用,但它是一个单独的工具窗口.

要打开它:菜单"视图" - >工具窗口 - >持久性

在这个窗口中,你会看到你的应用程序使用不同的持久性相关元素(我看到persistence.xml,entityManagerFactory从Spring上下文,myUnit我不知道它来自哪里.

在这里,您可以右键单击任何元素,然后选择"分配数据源". 在此输入图像描述

这将打开一个弹出对话框,其中包含一个小表,其中包含左列中的持久性元素和右列上分配给它的数据源.你可以从那里的"数据库"窗口中分配一个数据源,所以我选择了我为MySQL DB配置的数据源,并且验证错误消失了.

但是,如果我输入错误的表或列名称,我仍然会收到错误,这非常简洁.

  • 对于那些和我一样无知的人......你可以通过选择:View |来进入持久性工具窗口 工具窗口| 持久性. (11认同)

cha*_*nes 12

首先,您必须将数据源添加到IDE中.您可以通常在右侧的"数据库"选项卡中执行此操作.您可以从代码中导入此数据源.您应该确保按下按钮刷新表.IDEA将加载表并将其用于验证.然后,您必须在JPA facet内部设置此数据源.

  • “刷新表”很重要 (2认同)

Dav*_*ber 5

您需要做一些事情.首先,在Project Structure配置中配置Hibernate方面.您可以在此时选择Hibernate配置文件或创建一个新文件.然后,您应该在数据库窗口中配置数据源(视图 - >工具窗口 - >数据库).请记住在数据库窗口的"控制台"选项卡上设置数据库方言.最后,您需要转到Persistence窗口(View-> Tools Window-> Persistence)并将数据源添加到相应的facet.只需右键单击树中的右侧图标,然后选择"添加数据源"."数据源"列有一个下拉菜单,其中包含您已配置的所有数据源.IntelliJ然后正确识别表.

一句警告.从v12.04开始,IntelliJ不会修改您的Hibernate配置文件.您仍需要映射类并手动添加数据库详细信息.