Java >> Java tutorial >  >> Tag >> boolean

Hibernate Tips:Sådan kortlægger du en Boolean til Y/N

Hibernate Tips er en række indlæg, hvor jeg beskriver en hurtig og nem løsning på almindelige Hibernate-spørgsmål. Hvis du har et spørgsmål til et fremtidigt Hibernate Tip, bedes du skrive en kommentar nedenfor.

Spørgsmål:

Jeg arbejder med en ældre database, der gemmer booleaner som tegnene 'Y' og 'N'. Hvad er den nemmeste måde at knytte disse værdier til en enhedsattribut af typen Boolean ?

Løsning:

Som standard kortlægger Hibernate enhedsattributter af typen Boolean til en databasekolonne af typen boolean . Du kan ændre det ved at implementere en AttributeConverter, der kortlægger Boolean til en karakter . Hibernate anvender denne konverter transparent, når den bruger entity-attributten i en SQL INSERT-, UPDATE- eller SELECT-sætning.

Implementeringen af ​​en sådan konverter er ret nem. Du skal bare implementere AttributConverter grænseflade med dens metoder convertToDatabaseColumn og convertToEntityAttribute . Inden for disse metoder implementerer du konverteringen af ​​Boolean gøre indsigelse mod et tegn objekt og omvendt.

Du skal også kommentere din klasse med en @Converter anmærkning. Dette registrerer AttributConverter , og du kan bruge autoApply attribut for at definere, om konverteren skal bruges til alle attributter af den konverterede type.

OK, lad os tage et kig på en AttributConverter der konverterer en boolsk til en karakter .

@Converter(autoApply = true)
public class BooleanConverter implements AttributeConverter<Boolean, Character> {

	@Override
	public Character convertToDatabaseColumn(Boolean attribute) {
		if (attribute != null) {
			if (attribute) {
				return 'Y';
			} else {
				return 'N';
			}
				
		}
		return null;
	}

	@Override
	public Boolean convertToEntityAttribute(Character dbData) {
		if (dbData != null) {
			return dbData.equals('Y');
		}
		return null;
	}
	
}

Som du kan se, kræver implementeringen af ​​en sådan konverter ikke meget kode. Der er ikke desto mindre 2 ting, du bør være opmærksom på:

  1. Jeg kommenterede BooleanConverter klasse med @Converter anmærkning og indstil autoAnvend attribut til sandt. Dette beder Hibernate om at anvende denne konverter på alle enhedsattributter af typen Boolean .
  2. Enhedsattributter og databasekolonner kan indeholde nulværdier, og du skal håndtere dem i din convertToDatabaseColumn og convertToEntityAttribute metoder.

Det er alt, du skal gøre for at bevare en enhedsattribut af typen Boolean som tegnene 'Y' og 'N'. Så snart du tilføjer AttributConverter til dit program, vil Hibernate bruge det til at konvertere de matchende enhedsattributter og databasekolonner i alle SQL-sætninger.

Få flere oplysninger:

Hvis du vil lære mere om AttributConverter og andre muligheder for at kortlægge tilpassede datatyper, kan du nyde at læse følgende artikler:

  • Sådan implementerer du en JPA Attribut Converter
  • JPA 2.1 Attribut Converter – Den bedre måde at fortsætte optællinger på
  • Sådan bruger du PostgreSQLs JSONB-datatype med Hibernate

Dvaletipsbog







Få flere opskrifter som denne i min nye bog Hibernate Tips:Mere end 70 løsninger på almindelige dvaleproblemer.

Den giver dig mere end 70 klar-til-brug opskrifter til emner som grundlæggende og avancerede kortlægninger, logning, Java 8-understøttelse, caching og statisk og dynamisk definerede forespørgsler.

Få det nu!



No
Java tag