Google App Engine 프로젝트의 일부로 DataNucleus와 협력 중이며 지속적으로 열에 문제가 있습니다. DataNucleus Enhancer, JDO 및 열 이름 지정
@PrimaryKey(column = "user_id")
@Column(name = "user_id")
@Persistent(name = "user_id", column = "user_id", valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key m_id;
@Column(name = "user_name")
@Persistent(name = "user_name", column = "user_name")
private String m_userName;
당신이 말할 수없는 경우
, 나는 내가 두 명명 규칙을 (하나 하나는 SQL에서 더 잘 작동, 자바에서 잘 작동)가 있기 때문에 변수의 이름과 다른 열 뭔가 이름을 시도하고있다. 어쨌든, 나는 그 마커 주석의 모든 변화를 시도했다하지만 DataNucleus 증강 그들 중 하나를 존중하기를 거부, 그래서 나는이 같은 쿼리를 실행하면 :Query q = pm.newQuery(User.class,
"user_name == _username");
나는 항상이 같은 오류가 발생합니다
org.datanucleus.store.appengine.FatalNucleusUserException : 쿼리를 구문 분석하는 동안 예기치 않은 표현식 유형. 개체에 user_name이라는 필드가 있는지 확실합니까? A는이 같은 쿼리를 실행 물론
는 :
Query q = pm.newQuery(User.class,
"m_userName == _username");
... 모든 것이 잘 작동합니다. 따라서 해당 주석 중 하나라도 존경을 받았다면 user_name
이라는 필드가 있지만 분명히 그렇지 않습니다.
SO 내 질문은 : 내가 필드의 이름에서 쿼리에서 사용하는 토큰을 분리 할 수있는 방법이 있습니까? 내가 직접 쿼리를 편집하지 않고 필드의 이름을 변경하는 기능을 찾고 있어요.
참고 : 자바 클래스에서 SQL 명명 규칙을 사용하는 것은 엄청난 양의 XML을 직접 작성하는 것보다 빠릅니다. 주석을 사용하여이 작업을 수행해야합니다.
다음은 Querydsl의 홈페이지입니다. http://source.mysema.com/display/querydsl/Querydsl –