나는이 같은 JPA 엔티티 있습니다jpa AttributeConverter가 쿼리 절에 적용됩니까?
@Entity
public class RectangleEntity
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
private Integer x;
@Column
private Integer y;
@Column
@Convert(converter = ColorConverter.class)
private Color color;
}
을 그리고 내 ColorConverter은 다음과 같이이다 :
@Converter
public class ColorConverter implements AttributeConverter<Color, String[]> {
@Override
public String[] convertToDatabaseColumn(Color color) {
switch(color) {
case REDISH : return {"red","pink"};
case GREENISH: return {"green","cyan"};
}
return sb.toString();
}
@Override
public Color convertToEntityAttribute(String... colorStrings) {
if(colorStrings == null || colorStrings.length != 1) {
return null;
}
if(colorStrings[0].equals("red") || colorStrings[0].equals("pink")) {
return REDISH;
} else if(colorStrings[0].equals("green") || colorStrings[0].equals("cyan")) {
return GREENISH;
}
}
}
것은 내가이 같은 쿼리 내 열 값을 사용할 것입니다 :
Expression<String> colorPath = root.get("color");
Predicate predicate = requestStatePath.in(Color.REDISH);
Predicate[] predicatesArr = predicates.toArray(new Predicate[predicates.size()]);
criteriaQuery.where(predicatesArr);
CriteriaQuery<RectangleEntity> criteriaQuery = criteriaBuilder.createQuery(RectangleEntity.class);
TypedQuery<RectangleEntity> query = this.em.createQuery(criteriaQuery);
query.getResultList();
이 검색어를 사용하면 색상 필드가 분홍색이나 빨간색 인 모든 기록을 REDISH
으로 선택하고 싶습니다.
가능합니까?
Tanx 같은 조건으로 끝낼 것입니다. String []에 대해 당신이 맞습니다. 그건 내 실수 였어. 오라클 조회를 사용하기 때문에 내 문제는 가치를 저장하는 것이 아닙니다. 'in'값으로 사용될 값 세트로 변환 할 유형의 매개 변수로 내 뷰를 조회하려고합니다. 마지막 성명을받지 못했습니다. –