Używam sprawdzania wartości pól fasoli za pomocą javax.validation
.javax.validation: Wiązanie do sprawdzania długości ciągu w bajtach
To właśnie używam normalnie:
public class Market {
@NotNull
@Size(max=4)
private String marketCode;
@Digits(integer=4, fraction=0)
private Integer stalls;
// getters/setters
}
To będzie upewnić się, że każdy Market
instancja ma kod rynkową o maksymalnej długości 4
znaków oraz liczbę stoisku z maksymalnie 4 cyfr całkowitych i 0 cyfr dziesiętnych.
Teraz używam tego komponentu do załadowania/zapisania danych z/do DB.
W DB Mam tabelę Markets
zdefiniowany następująco:
CREATE TABLE MARKETS (
MARKET_CODE VARCHAR2(4 BYTE) NOT NULL,
STALLS NUMBER(4,0)
)
Jak widać, mam MARKET_CODE
które mogą być co najwyżej 4 bajtów długo. Adnotacja @Size
sprawdzi, czy ciąg znaków ma co najwyżej 4 znaków o długości, co jest błędne.
Pytanie brzmi: czy istnieje adnotacja podobna do @Size
, która sprawdza bajty napisów zamiast znaków?
4 bajty w jakim kodowaniu? Prawdopodobnie będziesz potrzebować własnego sprawdzania poprawności, który sprawdzi "ciąg" znaków .getBytes (Charsets.UTF_8). Length' – ptomli
Czy znaki w klasie MarketCode są dopasowane do jednego bajtu? – Simon
@ptomli Wydają się być 'WE8MSWIN1252'. Problem polega na tym, że jestem w środowisku testowym, nie wiem, czy DB w środowisku produkcyjnym będzie miał takie samo kodowanie ... – BackSlash