如何使用Hibernate将枚举值保存到DB?

nazar_art:

我试图通过Hibernate用随机数据填充数据库表。

但我的代码填充不兼容的数据到表中(不完全兼容它在枚举声明该元素的索引,为前:在ApartmentState- FREE是将其设置为相应的列其指数第一要素- 0。但我想提出或FREE为ENUM或串)。

我不知道为什么会这样。

这是代码片段:

private List<Apartment> generateApartments() {
        for (int i = 1; i <= 3; i++) {
            for (int j = 2; j <= 5; j++) {
                Apartment apartment = new Apartment();
                // fill apartment
                apartment.setRoomName(generateRoomName());
                apartment.setPricePerHour(generatePrice());
                apartment.setApartmentState(FREE);
                apartment.setRating(getDesiredRating(j));
                apartment.setSleepPlaces(getDesiredPlaces(i));
                apartment.setActive(true);
                // save apartment
                apartments.add(apartment);
            }
        }
        return apartments;
    }

    private Apartment.SleepPlaces getDesiredPlaces(int i) {
        switch (i) {
            case 1:
                return ONE_PLACE;
            case 2:
                return TWO_PLACES;
            case 3:
                return THREE_PLACES;
        }
        return ONE_PLACE;
    }

    private Apartment.StarRating getDesiredRating(int j) {
        switch (j) {
            case 2:
                return TWO_STARS;
            case 3:
                return THREE_STARS;
            case 4:
                return FOUR_STARS;
            case 5:
                return FIVE_STARS;
        }
        return TWO_STARS;
    }

我需要在表上填写一些枚举值,例如等级(2、3、4)和睡眠位置(1、2 ..)。

但这会将一些错误的数据放入表中。

这是工作台上的内容:

公寓

为什么只放索引,而不放字符串或枚举。
将来如何恢复所需的值。

这是Apartment类的摘录:

@Entity
@Table(name = "Apartments")
public class Apartment extends AbstractEntity implements Comparable<Apartment> {    
    private Integer id;
    private String roomName;
    private Double pricePerHour;
    private ApartmentState apartmentState;
    private StarRating rating;
    private SleepPlaces sleepPlaces;
    private Boolean active;

    public enum ApartmentState {
        FREE, REQUESTED, BOOKED, LIVED, CLEANING, PROCESSING
    }

    public enum StarRating {
        TWO_STARS("2 stars"), THREE_STARS("3 stars"), FOUR_STARS("4 stars"), FIVE_STARS("5 stars");

        private String description;

        private StarRating(String description) {
            this.description = description;
        }
        public String getDescription() {
            return description;
        }
    }

    public enum SleepPlaces {
        ONE_PLACE("1 person"), TWO_PLACES("2 persons"), THREE_PLACES("3 persons"), FOUR_PLACES("4 persons");

        private String count;

        private SleepPlaces(String count) {
            this.count = count;
        }
        public String getCount() {
            return count;
        }
    }

对我而言,最好的方法是将枚举作为枚举(可能在MySql工作台上)或字符串(name()valueOf()从Enum类使用and )。

但是如何用休眠方式实现它。

如何解决这个麻烦?

弗雷德里克·克罗斯(Frederic Close):

您可以添加以下枚举,以表示您希望String表示形式得以保留:

@Enumerated(EnumType.STRING)
private ApartmentState apartmentState;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将枚举案例值保存到UserDefaults中以进一步使用

使用 Hibernate @ManyToOne 关系将数据保存到 MySQL DB

使用 hibernate jpa 将大对象保存到 postgresql db

如何将枚举保存到UserDefaults?

如何使用 jQuery/Javascript 将值保存到 localStorage

如何使用 puppeteer 将值保存到变量

将枚举值保存到数据库

如何将符合Codable协议的枚举保存到UserDefaults?

如何将值保存到Edittext?

如何在流的末尾退出nodejs,因此最后的值将保存到db中,并正确记录

Swift:如何仅将新项目保存到 Realm DB 中并更新现有值

将值保存到oracle db中的变量中

如何将Piker的价值保存到Realm db?

Node JS如何将价值保存到Mongo DB

如何将传入消息保存到 firebase DB

PyQt使用代理将图像从QTableView保存到SQLite DB

使用Express将文件上传保存到Mongo DB

使用PHP将映像位置保存到MySQL DB

Grails:在使用Spock进行单元测试时,如何将值保存到瞬态字段?

如何使用Inno Setup将CDATA值保存到XML文件中?

如何使用jsoncpp将列表中的特定值保存到txt?

ReactJS-如何使用React Bootstrap将输入的值保存到状态

如何使用按钮将数据从复选框值保存到数据库

我如何使用curl将每个td值保存到变量

如何使用命令中的 mvvm 属性将选择器值保存到 web api?

如何将ParseInt()的String的值保存到数组中?

如何将Java long值保存到文件?

如何将JTextArea中的值保存到JTable中?

如何将Ajax调用值保存到变量中