Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hibernate 4中将表行映射到枚举值_Java_Orm_Enums_Hibernate 4.x - Fatal编程技术网

Java 在Hibernate 4中将表行映射到枚举值

Java 在Hibernate 4中将表行映射到枚举值,java,orm,enums,hibernate-4.x,Java,Orm,Enums,Hibernate 4.x,我有一个表roles,其中包含admin、user等值。我不想让它成为ENUM类型,因为我认为该列表在不久的将来可能会增长、缩小或更改。当我得到查询对象时,我无法找到一种方法让Hibernate在代码中直接映射到它们各自的枚举类型 有没有一个标准的方法 EDIT:因此,基本上,我不希望将字符串存储在行中(这是数据库中的内容),而是希望它在查询数据库时存储枚举 public class enum UserType { Admin("Admin"), User("User"); private f

我有一个表
roles
,其中包含
admin
user
等值。我不想让它成为
ENUM
类型,因为我认为该列表在不久的将来可能会增长、缩小或更改。当我得到查询对象时,我无法找到一种方法让Hibernate在代码中直接映射到它们各自的枚举类型

有没有一个标准的方法

EDIT:因此,基本上,我不希望将字符串存储在行中(这是数据库中的内容),而是希望它在查询数据库时存储枚举

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;
}

}

因为没有提供代码,所以我假设您想按管理员或用户查询数据

您可以创建角色的枚举,然后将其包含到实体类中

例如 枚举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;
        }
    
    }   
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);
    }

}
枚举2:

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;
        }
    
    }   
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 ...

}
如果您了解Hibernate中的条件

以下是通过枚举查询卡片的示例:

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

你能发布你的代码吗?我无法想象:P将代码简化为所需内容。过来看。