복붙노트

[SPRING] Intellij IDEA : JPA 유효성 검사를위한 데이터 소스 지정

SPRING

Intellij IDEA : JPA 유효성 검사를위한 데이터 소스 지정

나는 Intellij IDEA에 설정된 작은 웹 앱을위한 Spring 프로젝트를 가지고있다.

그것은 영속 계층을 위해 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>

실제 값은 프로퍼티 파일에서 읽혀지고 프로퍼티 오버라이드 메카니즘을 사용하여 런타임에 스프링에 의해 주입됩니다.

그런 다음 데이터 소스는 동일한 응용 프로그램 컨텍스트의 엔티티 관리자 팩토리에 주입됩니다.

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
    </bean>

마지막으로 엔티티 관리자는 주석을 사용하여 DAO에 주입합니다.

/**
 * Shared, thread-safe proxy for the actual transactional EntityManager
 */
@PersistenceContext
private EntityManager em;

Tomcat에 빌드하고 배포 할 때 제대로 작동하지만 Intellij의 JPA 유효성 검사는 데이터 소스를 가져올 위치를 이해하지 못하는 것 같습니다.

내 엔티티에서 테이블의 이름과 열 이름에 빨간색 밑줄이 표시되고 유효성 검사 메시지가 "테이블을 해결할 수 없음"또는 "열을 해결할 수 없음"입니다.

@Entity
@Table(name = "domain")
public class Domain extends AbstractAgendaEntity {

이 예에서는 유효한 것으로 간주되지 않는 "도메인"부분입니다.

"데이터베이스"도구 창에서 데이터베이스를 수동으로 구성했습니다. 콘솔에서 테이블을보고 SQL 쿼리를 수행 할 수 있습니다.

어떻게하면이 데이터 소스를 사용하여 JPA 엔티티의 테이블 이름을 확인하도록 Intellij에 지시 할 수 있습니까?

해결법

  1. ==============================

    1.나는 이것을 어떻게 마침내 발견했다.

    나는 이것을 어떻게 마침내 발견했다.

    핵심은 "지속성"도구 창입니다. 분명히 그것은 JPA 패싯을 추가 한 후에 사용할 수 있지만 별도의 도구 창입니다.

    그것을 열려면 : 메뉴 "보기"-> 도구 창 -> 지속성

    이 창에서 당신은 다른 영속성 관련 요소로 애플리케이션을 볼 수 있습니다 (나는 persistence.xml, Spring 컨텍스트의 entityManagerFactory를 볼 수 있습니다. myUnit은 어디서 왔는지 모릅니다).

    여기서 모든 요소를 ​​마우스 오른쪽 버튼으로 클릭하고 "데이터 소스 지정"을 선택할 수 있습니다.

    그러면 왼쪽 열의 지속성 요소와 오른쪽 열의 할당 된 데이터 소스가 포함 된 작은 테이블이있는 팝업 대화 상자가 열립니다. 거기에있는 "데이터베이스"창에서 데이터 소스를 할당 할 수 있으므로 MySQL DB와 voil에 대해 구성한 데이터 소스를 선택 했으므로 유효성 검사 오류가 사라졌습니다.

    그러나 잘못된 테이블이나 열 이름을 입력하면 여전히 오류가 발생합니다. 이는 매우 깔끔합니다.

  2. ==============================

    2.우선 IDE에 데이터 소스를 추가해야합니다. 일반적으로 오른쪽의 "데이터베이스"탭에서이 작업을 수행 할 수 있습니다. 코드에서이 데이터 소스를 가져올 수 있습니다. 버튼 새로 고침 테이블을 누르십시오. IDEA는 테이블을로드하고 유효성 검사에 사용합니다. 그런 다음 JPA 패싯 설정 내부에이 데이터 소스를 배치해야합니다.

    우선 IDE에 데이터 소스를 추가해야합니다. 일반적으로 오른쪽의 "데이터베이스"탭에서이 작업을 수행 할 수 있습니다. 코드에서이 데이터 소스를 가져올 수 있습니다. 버튼 새로 고침 테이블을 누르십시오. IDEA는 테이블을로드하고 유효성 검사에 사용합니다. 그런 다음 JPA 패싯 설정 내부에이 데이터 소스를 배치해야합니다.

  3. ==============================

    3.당신이해야 할 일이 몇 가지 있습니다. 먼저 Project Structure 구성에서 Hibernate 패싯을 구성하십시오. 이 시점에서 Hibernate 설정 파일을 선택하거나 새로 만들 수있다. 그런 다음 데이터베이스 창 (보기 -> 도구 창 -> 데이터베이스)에서 데이터 소스를 구성해야합니다. 데이터베이스 창에서 콘솔 탭의 데이터베이스 언어를 설정하는 것을 잊지 마십시오. 마지막으로 Persistence 창 (View-> Tools Window-> Persistence)으로 이동하여 적절한 패싯에 데이터 소스를 추가해야합니다. 트리에서 오른쪽 마우스 오른쪽 버튼을 클릭하고 "데이터 소스 추가"를 선택하십시오. 데이터 소스 열에는 사용자가 구성한 모든 데이터 소스가 포함 된 드롭 다운 메뉴가 있습니다. IntelliJ는 테이블을 올바르게 식별합니다.

    당신이해야 할 일이 몇 가지 있습니다. 먼저 Project Structure 구성에서 Hibernate 패싯을 구성하십시오. 이 시점에서 Hibernate 설정 파일을 선택하거나 새로 만들 수있다. 그런 다음 데이터베이스 창 (보기 -> 도구 창 -> 데이터베이스)에서 데이터 소스를 구성해야합니다. 데이터베이스 창에서 콘솔 탭의 데이터베이스 언어를 설정하는 것을 잊지 마십시오. 마지막으로 Persistence 창 (View-> Tools Window-> Persistence)으로 이동하여 적절한 패싯에 데이터 소스를 추가해야합니다. 트리에서 오른쪽 마우스 오른쪽 버튼을 클릭하고 "데이터 소스 추가"를 선택하십시오. 데이터 소스 열에는 사용자가 구성한 모든 데이터 소스가 포함 된 드롭 다운 메뉴가 있습니다. IntelliJ는 테이블을 올바르게 식별합니다.

    경고의 한마디. v12.04부터 IntelliJ는 Hibernate 구성 파일을 수정하지 않습니다. 여전히 클래스를 매핑하고 데이터베이스 세부 사항을 수동으로 추가해야합니다.

  4. ==============================

    4.다른 사람들처럼 데이터 소스를 설정하는 것과 관련하여, 이러한 잘못된 오류를 해결하기 위해 데이터베이스 패널에서 스키마 및 테이블 탭으로 이동하여 "information_schema"테이블의 왼쪽에있는 체크 박스를 눌러야했습니다. 데이터 베이스.

    다른 사람들처럼 데이터 소스를 설정하는 것과 관련하여, 이러한 잘못된 오류를 해결하기 위해 데이터베이스 패널에서 스키마 및 테이블 탭으로 이동하여 "information_schema"테이블의 왼쪽에있는 체크 박스를 눌러야했습니다. 데이터 베이스.

  5. ==============================

    5.엔티티 클래스에서 javax.persistence.Table 및 javax.persistence.Column을 가져 오는지 확인하십시오.

    엔티티 클래스에서 javax.persistence.Table 및 javax.persistence.Column을 가져 오는지 확인하십시오.

    그래서 각 클래스 상단에서 다음을 확인하십시오.

    import javax.persistence.Table;
    import javax.persistence.Column;
    

    이렇게하면 적절한 JPA 주석을 클래스로 가져옵니다.

  6. ==============================

    6.데이터 소스를 올바르게 설정했지만 열 이름이 표시되지 않았습니다. 아래 스키마와 카탈로그를 변경하면 모든 것이 올바르게 인식됩니다.

    데이터 소스를 올바르게 설정했지만 열 이름이 표시되지 않았습니다. 아래 스키마와 카탈로그를 변경하면 모든 것이 올바르게 인식됩니다.

    @Entity
    @Table(name = "stock_detail", schema = "testing", catalog = "")
    public class Xyz { 
        // ...
    
  7. ==============================

    7.JPA는 테이블 / 컬럼을 분석 할 수 없습니다. 모든 것이 제대로 작동하고 빨간색 오류 표시가 나타나면 검사 설정을 오류에서 경고로 변경할 수 있습니다. -

    JPA는 테이블 / 컬럼을 분석 할 수 없습니다. 모든 것이 제대로 작동하고 빨간색 오류 표시가 나타나면 검사 설정을 오류에서 경고로 변경할 수 있습니다. -

    파일 -> 설정 -> 검사 -> JPA 문제 -> 주석의 미해결 데이터베이스 참조

  8. from https://stackoverflow.com/questions/14356148/intellij-idea-specify-datasource-for-jpa-validation by cc-by-sa and MIT license