2014-12-03 3 views
0

admin, user과 같은 값을 갖는 테이블 roles이 있습니다. 가까운 장래에 목록이 커지거나 축소되거나 변경 될 수 있으므로이 유형을 ENUM 유형으로 만들고 싶지 않습니다. 쿼리 된 객체를 얻을 때 자동으로 Hibernate를 코드에있는 각각의 열거 형에 직접 매핑하는 방법을 알 수 없습니다.테이블 행을 Hibernate 4 열거 형 값으로 매핑

표준 접근 방식이 있습니까?

EDIT : 그래서 기본적으로 DB에있는 행에 문자열을 저장하는 대신 DB에 쿼리 할 때 열거 형을 저장하려고합니다.

public class enum UserType { 
Admin("Admin"), 
User("User"); 

private final String userType; 

UserType(String userType) { 
    this.userType = userType; 
} 

@Override 
public String toString() { 
    return userType; 
} 
} 
@Entity 
@Table(name = "user") 
public class User { 
    private Int id; 
    private UserType userType; 

public Int getId() { 
    return id; 
} 
public void setId(Int id) { 
    this.id = id; 
} 
public UserType getUserType() { 
    return userType; 
} 
public void setUserType(UserType userType) { 
    this.userType = userType; 
} 

} 그래서 메신저거야 제공되지 코드는 관리자 또는 사용자가 데이터를 조회 할 것을지지 않습니다 프로그래머 때문에

+0

당신이 당신의 코드를 게시 할 수있는가? 나는 상상할 수 없다 : P – Secondo

+0

방아쇠를 당긴 코드가 방금 필요한 것까지 내려 갔다. 확인 해봐. –

답변

0

?

역할의 열거 형을 생성 한 다음 엔티티 클래스에 포함시킬 수 있습니다.

열거 1

public enum CardSuit implements Serializable{ 

     DIAMOND("Diamond"),HEART("Heart"),SPADE("Spade"),CLUB("Club"); 

     private String cardSuit; 

     private CardSuit(String cardSuit){ 
      this.cardSuit = cardSuit; 
     } 

     public String toString(){ 
      return cardSuit; 
     } 

    } 

열거 2 : 난 열거 형 매핑 방식

public enum CardValue implements Serializable{ 

    ACE(1),TWO(2),THREE(3),FOUR(4), 
    FIVE(5),SIX(6),SEVEN(7),EIGHT(8), 
    NINE(9),TEN(10),JACK(10),QUEEN(10),KING(10); 

    private int cardValue; 

    private CardValue (int cardValue){ 
     this.cardValue = cardValue; 
    } 

    public int getValue(){ 
     return cardValue; 
    } 

    public String toString(){ 
     return String.valueOf(cardValue); 
    } 

} 

이.

@Entity 
@Table(name="CARD") 
public class Card implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="CARD_ID") 
    private int cardId; 

    @Enumerated(EnumType.STRING) 
    @Column(name="CARD_VALUE") 
    private CardValue cardValue; 

    @Enumerated(EnumType.STRING) 
    @Column(name="CARD_SUIT") 
    private CardSuit cardSuit; 

    //Setter & Getter ... 

} 

여기

최대 절전 모드

에 기준에 대한 지식이있는 경우 열거하여 카드를 조회하는 예입니다

sessionFactory.getCurrentSession() 
      .createCriteria(Card.class) 
      .add(Restrictions.eq("cardValue", CardValue.ACE)) 
      .list();