2016-06-28 98 views
2

下面是一個Entity名爲Person:使用布爾值設置實體的字符串字段?

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

} 

使用上面的二傳手,如果我要做到以下幾點:

person.setPaidInFull(true); 

什麼字符串值將是其設置爲,這將是"Y""N"

+0

你試過了嗎? – marthursson

回答

1
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"; 
    } 
} 
+0

謝謝,所以基本上將該值設置爲true會將數據庫中的值設置爲字符串值「Y」? – java123999

+0

是的,如果你的數據庫類型接受一個字符串是(NVARCHAR等 – Igoranze

1

,你也可以嘗試休眠 「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