Задать строковое поле для объекта, используя логическое значение?
Следующее является 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";
}
}
Используя сеттер выше, если бы я сделал следующее:
person.setPaidInFull(true);
Какое строковое значение будет установлено, будет ли оно "Y"
или же "N"
?
2 ответа
Решение
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.