Posts

Java Date and Time examples

look at: https://stackabuse.com/how-to-get-current-date-and-time-in-java/  valuable source about java date classes : https://stackoverflow.com/questions/32437550/whats-the-difference-between-instant-and-localdatetime System.out.println(LocalDateTime.now()); 2021-03-19T13:27:06.043 System.out.println(Instant.now()); 2021-03-19T09:27:06.044Z System.out.println(LocalDateTime.now().atZone(ZoneId.systemDefault())); 2021-03-19T13:27:06.057+04:00[Asia/Baku] System.out.println(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()); 2021-03-19T09:27:06.058Z System.out.println(Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant())); Fri Mar 19 13:27:06 AZT 2021 System.out.println(new Date()); Fri Mar 19 13:27:06 AZT 2021 System.out.println(LocalDate.now()); 2021-03-19 System.out.println(LocalTime.now()); 13:27:06.066 System.out.println(ZonedDateTime.now()); 2021-03-19T13:27:06.066+04:00[Asia/Baku] System.out.println(ZoneId.systemDefault()); Asia/Baku System.o...

oracle pl/sql ve hibernate arasinda array tiplerle ishlemek

oracle pl/sql prosedurlarla ishleyerken bazada yaradilan custom array typelarla(base integer ve ya stringden ibaretdir) ishleyerken java terefde problem olur , HikaryDataSoruce da arraylar createArrayOf ile yaranir  , oracle ise ancaq createArray ile yaradilan array typelari qebul edir . bu problemi hell etmek uchun:     public OracleConnection getOracleConnection() {         Connection conn = oracleDb().getConnection();         return conn.unwrap(OracleConnection.class);     } Array prodCodes = getOracleConnection.createArray("BACK.T_STR_COLL", request.getProdCodes()); array i bazaya oturmemishden evvel OracleConnection u almaq lazimdir bunu da yuxarida olan kod ile almaq olur , daha sonra ui dan oturulen arrayi javada OracleConnectionun createArray metodu ile yaradib o formada bazaya oturmek lazimdir burada SimpleJdbcCall vasitesile oracle pl/sql proseduru chagirilir , nece chagirilmagi docda var: https://docs.spring.io/...

.csv faylda melumati verib liqubase ile bazaya insert etmek

 bu ad_groups.csv faylda olan data   :    id;name;description 1;HEAD_OF_CASHIER;Head of Cashier 2;Cashier;Cashier 3;Teller;Teller 4;KAD;Underwriter 5;HEAD_OF_TELLER;Head of Teller bu ise liqubase faylda de tetbiqi : <loadData file="config/liquibase/ad_groups.csv"                   separator=";"                   tableName="active_directory_group"/>

timezone ile bagli Jackson deserializableda problem

  demeli date save olanda duzgun vaxtla save olur bazaya  ,ama qayidanda jackson deserializable levelinde ilishir ve 4 saat dala gorsenir swaggerde , bunun helli uchun: bu problem hem @CreationTimestamp ve @UpdateTimestamp da hem de el ile daxil olunan date larda da bash verir app propertiese 2 setr eleve edirik jackson serizable-deserizable emelyati uchun : spring.jackson.serialization.write-dates-with-zone-id=true spring.jackson.time-zone=GMT+4

java ile appden ssl olan hostlara qoshulma uchun sertifikat meselesi

1 ci usul JVM in cacertine elave etmek Windows:  keytool -import -alias cert_alias -file cert.cer -keystore "C:\Program Files\Java\jdk-11.0.9\lib\security\cacerts kodu ise changeit verilir , kod shertidir bashqa sheyde vermek olar lazim olan sertifikati  uygun saydan yukleyirik sora onun kompdaki pathda bu komandi verilir , meselen download foldere dushubse ora gedib yuxaridaki commandi run edirik cmd de Mac: import cert into jvm 17(other versions same as well)  1.  cd /Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home/lib/security  2. sudo keytool -import -file ~/Documents/certs/fusion.cer -keystore /Library/Java/JavaVirtualMachines/jdk-17.0.5.jdk/Contents/Home/lib/security/cacerts -alias "fusion" 2 ci usul. appin folderinde trustStore yaradib, jvmi override etmek Yuxaridaki numunelerde serverin certifikati jvm in cacertine elave olunur. Amma jvmin default cacertini override edib , appin ichinde cacert yaratmaq mumkundur: keytool -import -trustcacer...

jpa entitylerde get zamani relationa bagli rekursiyanin mapstruct istifade ederken helli

 mapstructda map ederken ozu arxada ozune lazimi metodlar generate edir, ve bu metodlarin ichinde rekursiya yaradacaq fildleri biz ozumuz ignoe ede bilerik @Mapping(target = "city.stores", ignore = true)     @Mapping(target = "partner.stores", ignore = true)     StoreResponseDto toStoreResponseDto(Store store);     @Mapping(target = "partners", ignore = true)     CategoryResponseDto categoryToCategoryResponseDto(Category category);   burada 1 ci methodu ozum yazmisham dtonun ichinde rekursiyaya sebeb olacaq fileldi ignore edirem , 2 ci metodu ise arxada ozu generate edir ve ordada biz dolayi yolla entity elaqesi ile rekursiyaya dushe bilirik deye partners filedini ignore edirem

hibernateda entiyde array tipli objectlerle ishlemek uchun solution

bele case ola bilerki postgres bazada int ve ya string tipde array saxlansin . bu arrayla entityde hibernate vasitesile ishlemek uchun bir solution lazimdir  bunu uchun gradle da  implementation 'com.vladmihalcea:hibernate-types-52:2.7.0'    bu dependecy lazimdir bunun maven versiyasini da tapmaq olar . indi ise kod numunesine baxaq: @Entity(name = "Event") @Table(name = "event") @TypeDefs({     @TypeDef(         name = "string-array",         typeClass = StringArrayType.class     ),     @TypeDef(         name = "int-array",         typeClass = IntArrayType.class     ) }) public static class Event extends BaseEntity {     @Type( type = "string-array" )     @Column(         name = "sensor_names",         columnDefinition = "text[]"     )     private String[] sensorNames; ...