Intellij IDEA: JPA 유효성 검사를 위한 데이터 소스 지정
저는 Intellij IDEA에 설치된 작은 웹 앱의 봄 프로젝트를 가지고 있습니다.
지속성 계층에 대해 최대 절전 모드 위에 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>
실제 값은 속성 파일에서 읽고 Spring이 속성 재지정 메커니즘을 사용하여 런타임에 주입합니다.
그런 다음 데이터 소스가 동일한 애플리케이션 컨텍스트에서 엔티티 관리자 팩토리에 주입됩니다.
<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 {
예에서는 이예서다같습니다음과는에다▁thes같'▁int니입니다."domain"
유효하지 않은 부분.
데이터베이스 도구 창에서 데이터베이스를 수동으로 구성하고, 콘솔에서 테이블을 보고 SQL 쿼리를 수행할 수 있습니다.
Intellij에게 이 데이터 소스를 사용하여 JPA 엔티티의 테이블 이름을 확인하도록 지시하려면 어떻게 해야 합니까?
드디어 방법을 알게 되었습니다.
핵심은 "지속성" 도구 창입니다.JPA 패싯을 추가한 후 사용할 수 있지만 별도의 도구 창입니다.
열기 : 메뉴 "보기" -> 도구창 -> 지속성
에는 서로 요소가 프로그램이 됩니다.persistence.xml
,entityManagerFactory
에서, 의맥락에서고그, 리봄고▁from.myUnit
어디서 왔는지는 모르겠지만요
여기서 원하는 요소를 마우스 오른쪽 단추로 클릭하고 "데이터 소스 할당"을 선택할 수 있습니다.
왼쪽 열에는 지속성 요소가 포함된 작은 테이블이 있고 오른쪽 열에는 지속성 요소에 할당된 데이터 원본이 있는 팝업 대화 상자가 열립니다.그 안에 있는 "데이터베이스" 창에서 데이터 소스를 할당할 수 있으므로 MySQL DB에 대해 구성한 데이터 소스를 선택하고 voila를 선택하면 검증 오류가 사라집니다.
그러나 테이블이나 열 이름을 잘못 입력해도 오류가 발생하여 상당히 깔끔합니다.
먼저 IDE에 데이터 소스를 추가해야 합니다.일반적으로 오른쪽에 있는 "데이터베이스" 탭에서 이 작업을 수행할 수 있습니다.코드에서 이 데이터 원본을 가져올 수 있습니다.버튼 새로 고침 테이블을 눌러야 합니다.IDEA는 테이블을 로드하고 검증에 사용합니다.그런 다음 JPA 패싯 내부에서 이 데이터 소스를 설정해야 합니다.
당신이 해야 할 일이 몇 가지 있습니다.먼저 프로젝트 구조 구성에서 최대 절전 모드 패싯을 구성합니다.이 시점에서 최대 절전 모드 구성 파일을 선택하거나 새 파일을 만들 수 있습니다.그런 다음 데이터베이스 창(보기->도구 창->데이터베이스)에서 데이터 원본을 구성해야 합니다.데이터베이스 창의 콘솔 탭에서 데이터베이스 방언을 설정해야 합니다.마지막으로 지속성 창(보기->도구 창->지속성)으로 이동하여 데이터 소스를 적절한 패싯에 추가해야 합니다.트리에서 오른쪽 아이콘을 마우스 오른쪽 버튼으로 클릭하고 "데이터 소스 추가"를 선택합니다.데이터 원본 열에는 구성한 모든 데이터 원본이 포함된 드롭다운 메뉴가 있습니다.그러면 IntelliJ가 테이블을 올바르게 식별합니다.
경고 한 마디.v12.04 이후 IntelliJ는 최대 절전 모드 구성 파일을 수정하지 않습니다.클래스를 매핑하고 데이터베이스 세부 정보를 수동으로 추가해야 합니다.
JPA의 경우 테이블/열을 확인할 수 없습니다.모든 것이 작동하고 빨간색 오류 표시 때문에 짜증이 난 경우, 검사 설정을 오류에서 경고로 변경할 수 있습니다.
File --> Settings --> Inspections --> JPA issues --> Unresolved database references in annotations
.
다른 사람들이 언급한 것처럼 데이터 원본을 설정하는 것 외에도 이러한 잘못된 오류를 해결하기 위해 데이터베이스 패널에서 설정, 스키마 & 테이블 탭으로 이동하여 데이터베이스에 대한 "information_schema" 테이블 왼쪽의 확인란을 눌러야 했습니다.
가져오는 중인지 확인합니다.javax.persistence.Table
그리고.javax.persistence.Column
엔티티 클래스 내에 있습니다.
각 클래스의 맨 위에서 다음을 확인합니다.
import javax.persistence.Table;
import javax.persistence.Column;
올바른 JPA 주석을 클래스로 가져옵니다.
데이터 소스를 올바르게 설정했지만 열 이름이 표시되지 않았습니다.아래와 같이 스키마와 카탈로그를 변경한 후 모든 것이 올바르게 인식되었습니다.
@Entity
@Table(name = "stock_detail", schema = "testing", catalog = "")
public class Xyz {
// ...
당신의 아이디어 버전에 따라 경로가 다르기 때문입니다.그래서 파일 --> 설정에서 : 해결되지 않은 데이터베이스 참조만 검색합니다.그런 다음 확인 또는 심각도 변경 플래그의 선택을 취소합니다.
마우스 커서를 잠시 동안 테이블 이름 위에 두면 데이터 소스를 할당할 수 있는 상황에 맞는 메뉴가 나타납니다.
언급URL : https://stackoverflow.com/questions/14356148/intellij-idea-specify-datasource-for-jpa-validation
'programing' 카테고리의 다른 글
테이블의 ID에서 다른 테이블의 ID로 MariaDB 합계 크기 (0) | 2023.07.24 |
---|---|
matplotlib에서 빈 하위 플롯을 만들려면 어떻게 해야 합니까? (0) | 2023.07.24 |
특정 노드의 mariaDB 데이터베이스 무시 (0) | 2023.07.24 |
파워셸 색상을 재설정하려면 어떻게 해야 합니까? (0) | 2023.07.24 |
파이썬에서 속성 기능을 사용하는 방법에 대한 실제 예는 무엇입니까? (0) | 2023.07.19 |