使用布尔值设置实体的字符串字段?

Setting a String field of an entity using a boolean?

以下是一个 Entity 命名的人:

@Entity
@Table(
    name = "PERSON"
)
public class Person {

    //other fields etc

    @Column(
        name = "PAID_IN_FULL",
        nullable = false
    )
    private String paidInFull;

   public void setPaidInFull(boolean paidInFull) {
        this.paidInFull = paidInFull?"Y":"N";
    }

}

使用上面的 setter,如果我要执行以下操作:

person.setPaidInFull(true);

将其设置为什么字符串值,是 "Y" 还是 "N"

paidInFull?"Y":"N";

如果说是另一种方式:

if (paidInFull)
    return "Y";
else
    return "N";

所以如果你要这样做

person.setPaidInFull(true);

this.paidInFull 将是 "Y".

这是一个完整的例子:

package nl.testing.startingpoint;

public class Main {
    private static String paidInFull;

    public static void main(String args[])
    {
        setPaidInFull(true);
        System.out.println(paidInFull);
    }

    public static void setPaidInFull(boolean paidInFull) {
        Main.paidInFull = (paidInFull) ? "Y" : "N";
    }
}

您也可以尝试休眠 "yes_no" 类型。

import org.hibernate.annotations.Type;

@Entity
@Table(name = "PERSON")
public class Person {

     //other fields etc

     @Column(name = "PAID_IN_FULL", nullable = false)
     @Type(type = "yes_no")
     private Boolean paidInFull;

     public void setPaidInFull(boolean paidInFull) {
          this.paidInFull = paidInFull
     }

}

请参考https://dzone.com/articles/mapping-boolean-y-or-n-using