java - 从数据库读取时 JPA 字符串为 boolean 值

标签 java jpa

在数据库中,我们存储一个值为“Y”或“N”且类型为 varchar 的值。但是,在我的模型类中,例如在“Employee”中说,我有一个对应于该值的字段:一个 boolean 值,例如 boolean isManager。

如果我将类中的字段设置为字符串,则一切正常。但是,我想保留它的 boolean 值。这里可以做什么? JPA 中有没有一种方法可以告诉它根据“Y”和“N”值转换为 1 或 0 或者真或假?

最佳答案

很大程度上取决于您的类(class)以及您如何使用它。如果你的类是一个没有逻辑的 POJO,你可以在没有 EntityListeners 的情况下只使用 JPA,只需使用 transient boolean 字段代理你的私有(private) manager String 字段,例如. :

...
private String manager;
private transient boolean managing;

...
public boolean isManaging {
    return "Y".equals(manager);
}

public void setManaging(boolean managing) {
    this.managing = managing;
    this.manager = managing ? "Y" : "N";
}

manager 没有 getter/setter,如果您愿意,也可以使用私有(private)的(或注释您的方法而不是字段)。

更好的方法是将您的 manager 字段作为枚举而不是带有 JPA 注释 @Enumerated(EnumType.STRING) 的字符串。

编辑:另外,看看Configure hibernate (using JPA) to store Y/N for type Boolean instead of 0/1

关于java - 从数据库读取时 JPA 字符串为 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827161/

相关文章:

java - 在双向持久化子实体时如何级联父实体

java - 使用 Hibernate 表示表关系是个好主意吗?

java - 使用复合EmbeddedId(包含另一个EmbeddedId的EmbeddedId)插入JPA实体的顺序

javascript - 我需要帮助为 JDK 9.0.1 创建路径并让 cmd 运行名为 javac HelloApp.java 的命令

jpa - Internal Exception : java. sql.SQLException : Invalid state, 连接对象被关闭

java - 将 ID 分配给 JPA native 查询结果的最简单方法是什么?

Java 二维数组与数组并行的问题

java - 隐藏 ActionBar(定时)和动画 View

java - 为什么 Scala 不能声明但 undefined variable ,而 Java 可以?

java - 处理白屏?