জ্যাকসন এবং লম্বোক একসঙ্গে কাজ করতে পারবেন না


91

আমি জ্যাকসন এবং লম্বোকের সংমিশ্রণে পরীক্ষা নিরীক্ষা করছি। সেগুলি আমার ক্লাস:

package testelombok;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Value;
import lombok.experimental.Wither;

@Value
@Wither
@AllArgsConstructor(onConstructor=@__(@JsonCreator))
public class TestFoo {
    @JsonProperty("xoom")
    private String x;
    private int z;
}
package testelombok;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.xebia.jacksonlombok.JacksonLombokAnnotationIntrospector;
import java.io.IOException;

public class TestLombok {

    public static void main(String[] args) throws IOException {
        TestFoo tf = new TestFoo("a", 5);
        System.out.println(tf.withX("b"));
        ObjectMapper om = new ObjectMapper().setAnnotationIntrospector(new JacksonLombokAnnotationIntrospector());
        System.out.println(om.writeValueAsString(tf));
        TestFoo tf2 = om.readValue(om.writeValueAsString(tf), TestFoo.class);
        System.out.println(tf2);
    }

}

সেগুলিই আমি জারগুলিকে ক্লাসপথে যুক্ত করছি:

আমি এটি নেটবীনের সাথে সংকলন করছি (আমি মনে করি না এটি সত্যিই প্রাসঙ্গিক, তবে আমি এটিকে পুরোপুরি এবং বিশ্বস্তভাবে পুনরুত্পাদনযোগ্য করে তুলতে যাইহোক রিপোর্ট করছি)। উপরের পাঁচটি জেআর " lib" src"," nbproject"," test"এবং" build" সহ" " প্রকল্পের ফোল্ডারের ভিতরে " " নামে একটি ফোল্ডারে রাখা হয়েছে । আমি তাদের প্রকল্পের বৈশিষ্ট্যগুলিতে " জেআর / ফোল্ডার যুক্ত করুন " বোতামের মাধ্যমে নেটবিনে যুক্ত করেছি এবং সেগুলি উপরের তালিকা হিসাবে সঠিক ক্রমে তালিকাভুক্ত। প্রকল্পটি একটি স্ট্যান্ডার্ড "জাভা অ্যাপ্লিকেশন" টাইপ প্রকল্প।

তদ্ব্যতীত, নেটবিয়ান প্রকল্পটি " সংরক্ষণে সংকলন করবেন না ", " ডিবাগিং তথ্য উত্পন্ন করা ", " প্রতিবেদক অবহেলিত এপিআই ", " ট্র্যাক জাভা নির্ভরতা ", " অ্যাক্টিভেট টীকা প্রোটেকশিং " এবং " সম্পাদকীয়টিতে অ্যাক্টিভেটে টিকা রচনা সংগ্রহ " কনফিগার করা হয়েছে । কোনও এনোটেশন প্রসেসর বা টিকা প্রক্রিয়াকরণ বিকল্পটি স্পষ্টভাবে নেটবিন্সে কনফিগার করা হয়নি। এছাড়াও, " -Xlint:all" কমান্ড লাইন বিকল্পটি সংকলক কমান্ড লাইনে উত্তীর্ণ হয় এবং সংকলক বাহ্যিক ভিএম-তে চালিত হয়।

আমার জাভাকের সংস্করণটি 1.8.0_72 এবং আমার জাভার সংস্করণটি 1.8.0_72-বি 15। আমার নেটবিনস 8.1।

আমার প্রকল্প জরিমানা সংকলন। তবে এটি কার্যকর করার ক্ষেত্রে একটি ব্যতিক্রম ছুঁড়ে। ব্যতিক্রমটি এমন কিছু বলে মনে হয় না যা সহজে বা সুস্পষ্ট স্থিরযোগ্য বলে মনে হয়। এখানে স্ট্যাকট্রেস সহ আউটপুট দেওয়া হচ্ছে:

TestFoo(x=b, z=5)
{"z":5,"xoom":"a"}
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Argument #0 of constructor [constructor for testelombok.TestFoo, annotations: {interface java.beans.ConstructorProperties=@java.beans.ConstructorProperties(value=[x, z]), interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(mode=DEFAULT)}] has no property name annotation; must have name when multiple-parameter constructor annotated as Creator
 at [Source: {"z":5,"xoom":"a"}; line: 1, column: 1]
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:296)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:269)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
    at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
    at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:475)
    at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3890)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3785)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2833)
    at testelombok.TestLombok.main(TestLombok.java:14)
Caused by: java.lang.IllegalArgumentException: Argument #0 of constructor [constructor for testelombok.TestFoo, annotations: {interface java.beans.ConstructorProperties=@java.beans.ConstructorProperties(value=[x, z]), interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator(mode=DEFAULT)}] has no property name annotation; must have name when multiple-parameter constructor annotated as Creator
    at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._addDeserializerConstructors(BasicDeserializerFactory.java:511)
    at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory._constructDefaultValueInstantiator(BasicDeserializerFactory.java:323)
    at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:253)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:219)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:141)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:406)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:352)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
    ... 7 more

আমি ইতিমধ্যে এলোমেলোভাবে পোষ্টগুলি @Valueএবং @AllArgsConstructorটীকাগুলি সহ পোকার চেষ্টা করেছি , তবে আমি এর থেকে আরও ভাল করতে পারিনি।

আমি ব্যতিক্রমটি গুগল করলাম এবং জ্যাকসনের উপর একটি পুরানো বাগের প্রতিবেদন এবং অন্য একটি যা খোলা রয়েছে তা খুঁজে পেয়েছি তবে মনে হয় এটি অন্য কোনও কিছুর সাথে সম্পর্কিত । যাইহোক, এটি এখনও এই বাগটি কীভাবে বা এটি ঠিক করতে হবে সে সম্পর্কে কিছুই জানায় না। এছাড়াও, আমি অন্য কোথাও এমন দরকারী কিছু খুঁজে পাচ্ছিলাম না।

যেহেতু আমি যা করার চেষ্টা করছি তা লম্বোক এবং জ্যাকসন উভয়েরই মূল ব্যবহার, তাই এই বিষয়টিকে কীভাবে কার্যকরী করা যায় সে সম্পর্কে আমি আর কোনও দরকারী তথ্য খুঁজে পেলাম না বলে মনে হয় বিজোড় বলে মনে হচ্ছে। আমি কিছু মিস করেছি?

শুধু "বলার অপেক্ষা রাখে না ছাড়া Lombok ব্যবহার করবেন না " বা " Jackson ব্যবহার করবেন না ", কেহ এই সমাধান কিভাবে সম্পর্কে কোনো ধারণা আছে কি?

উত্তর:


58

আপনি যদি অপরিবর্তনীয় তবে লম্বক এবং জ্যাকসন ব্যবহার করে একটি জসন সিরিয়ালযোগ্য POJO চান। আপনার লম্ববক্স নির্মাতায় জ্যাকসনগুলিতে নতুন টীকাগুলি ব্যবহার করুন @JsonPOJOBuilder(withPrefix = "") আমি এই সমাধানটি চেষ্টা করেছি এবং এটি খুব ভালভাবে কাজ করে। নমুনা ব্যবহার

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import lombok.Builder;
import lombok.Value;

@JsonDeserialize(builder = Detail.DetailBuilder.class)
@Value
@Builder
public class Detail {

    private String url;
    private String userName;
    private String password;
    private String scope;

    @JsonPOJOBuilder(withPrefix = "")
    public static class DetailBuilder {

    }
}

যদি আপনার সাথে অনেকগুলি ক্লাস থাকে @Builderএবং আপনি বয়লারপ্লেট কোডটি ফাঁকা টীকায়িত করতে চান না তবে আপনি টীকাগুলি ইন্টারসেপ্টরটি ফাঁকা রাখতে ওভাররাইড করতে পারবেনwithPrefix

mapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector() {
        @Override
        public JsonPOJOBuilder.Value findPOJOBuilderConfig(AnnotatedClass ac) {
            if (ac.hasAnnotation(JsonPOJOBuilder.class)) {//If no annotation present use default as empty prefix
                return super.findPOJOBuilderConfig(ac);
            }
            return new JsonPOJOBuilder.Value("build", "");
        }
    });

এবং আপনি @JsonPOJOBuilderটীকা সহ খালি বিল্ডার শ্রেণিটি সরাতে পারেন ।


একটি সমাধানের একটি লিঙ্ক স্বাগত, তবে দয়া করে আপনার উত্তরটি কার্যকর না হওয়া নিশ্চিত করুন: লিঙ্কটির চারপাশে প্রসঙ্গটি যুক্ত করুন যাতে আপনার সহ ব্যবহারকারীদের কিছু ধারণা থাকতে পারে এটি কী এবং কেন সেখানে রয়েছে, তবে পৃষ্ঠার সর্বাধিক প্রাসঙ্গিক অংশটি উদ্ধৃত করুন ' লক্ষ্য পৃষ্ঠাটি অনুপলব্ধ ক্ষেত্রে লিঙ্কটি পুনরায় সংযুক্ত করুন। লিঙ্কের চেয়ে সামান্য বেশি উত্তর মুছতে পারে।
geisterfurz007

এই সমাধানটি জ্যাকসনের মস্তিষ্ক-মৃত কন্সট্রাক্টর ভিত্তিক ডিসরিয়ালাইজেশন ইস্যুগুলির চারপাশে কাজ করার সময় অপরিবর্তনীয়তা বজায় রাখে (একাধিক ক্ষেত্র নির্মাতা বুদ্ধিমান কিছু চেষ্টা করার পরিবর্তে প্রতিটি নির্মাণকারী যুক্তিতে @ জসনপ্রপার্টি প্রয়োজন)। (আমি কনস্ট্রাক্টর _ = {@ জসনক্রিটর
জিবি

35

অপরিবর্তনীয় + লম্বোক + জ্যাকসন পরবর্তী উপায়ে অর্জন করা যেতে পারে:

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Value;

@Value
@NoArgsConstructor(force = true, access = AccessLevel.PRIVATE)
@AllArgsConstructor
public class LocationDto {

    double longitude;
    double latitude;
}

class ImmutableWithLombok {

    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();

        String stringJsonRepresentation = objectMapper.writeValueAsString(new LocationDto(22.11, 33.33));
        System.out.println(stringJsonRepresentation);

        LocationDto locationDto = objectMapper.readValue(stringJsonRepresentation, LocationDto.class);
        System.out.println(locationDto);
    }
}

4
AllArgsConstructorইতিমধ্যে @Valueটীকাগুলির অংশ নয় ?
জোন

8
একটি সুস্পষ্ট যোগ করা @NoArgsConstructor@Value@AllArgsConstructor
এন্ট্রোটেশন

4
বিল্ডার প্যাটার্ন ছাড়াই - আমার মতে - আমি সেরা সমাধান খুঁজে পেয়েছি। ধন্যবাদ
রডোক্সকা

13

আমি উপরের কয়েকটি চেষ্টা করেছিলাম এবং তারা সবাই স্বভাবসুলভ। আমার পক্ষে সত্যিই কী কাজ করেছে তা এখানে উত্তর পেয়েছি ।

আপনার প্রকল্পের মূল ডিরেক্টরিতে একটি lombok.config ফাইল যুক্ত করুন (যদি আপনি ইতিমধ্যে না করে থাকেন)

lombok.config

এবং ভিতরে এটি পেস্ট করুন

lombok.anyConstructor.addConstructorProperties=true

তারপরে আপনি নীচের মতো আপনার পোজো সংজ্ঞায়িত করতে পারেন:

@Data
@AllArgsConstructor
public class MyPojo {

    @JsonProperty("Description")
    private String description;
    @JsonProperty("ErrorCode")
    private String errorCode;
}

4
কিন্তু এই পরিবর্তনযোগ্য না?
vphilipnyc

8

আমার ঠিক একই সমস্যা ছিল, এটি suppressConstructorProperties = trueপরামিতি যুক্ত করে "সমাধান" করা হয়েছে (আপনার উদাহরণটি ব্যবহার করে):

@Value
@Wither
@AllArgsConstructor(suppressConstructorProperties = true)
public class TestFoo {
    @JsonProperty("xoom")
    private String x;
    private int z;
}

জ্যাকসন দৃশ্যত java.beans.ConstructorProperties নির্মাণকারীদের সাথে টীকা যুক্ত পছন্দ করেন না । suppressConstructorProperties = trueপরামিতি বলে Lombok এটি যোগ করতে না (এটা ডিফল্ট ভাবে না)।


7
suppressConstructorPropertiesএখন
হ্রাস করা

4
যেটি কোনও সমস্যা নয়, যেহেতু নতুন ডিফল্টটিও false
মাইকেল পাইফেল

4

@AllArgsConstructor(suppressConstructorProperties = true)অবচয় করা হয়। নির্ধারণ করুন lombok.anyConstructor.suppressConstructorProperties=true( https://projectlombok.org/features/configuration ) এবং পরিবর্তন POJO থেকে Lombok টীকা @Valueথেকে @Data+ + @NoArgsConstructor+ + @AllArgsConstructorআমার জন্য কাজ করে।


14
এটি ক্লাসটিকে পরিবর্তনযোগ্য হিসাবে পরিবর্তন করে, যা আমি ধরে নিয়েছি ওপি যা চায় তা নয়
অমিত গোল্ডস্টেইন

2

আমার জন্য এটি কাজ করেছিল যখন আমি লম্বক সংস্করণটি আপডেট করেছি: 'org.projectlombok: lombok: 1.18.0'


2

জান রিকের উত্তর থেকে

লম্বোক 1.18.4 থেকে, কনস্ট্রাক্টর প্যারামিটারগুলিতে কোন টীকাগুলি অনুলিপি করা হয়েছে তা আপনি কনফিগার করতে পারেন। এটি আপনার sertোকান lombok.config:

lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonProperty

তারপরে কেবল @JsonPropertyআপনার ক্ষেত্রগুলিতে যুক্ত করুন:

...

নামটি মিললেও আপনার প্রতিটি ক্ষেত্রে একটি @ জসনপ্রপার্টি দরকার, তবে যাইহোক এটি অনুসরণ করা একটি ভাল অনুশীলন is আপনি এটি ব্যবহার করে আপনার ক্ষেত্রগুলি সর্বজনীন চূড়ান্ত করতে সেট করতে পারেন, যা আমি গ্রাহকদের চেয়ে বেশি পছন্দ করি।

@ToString
@EqualsAndHashCode
@Wither
@AllArgsConstructor(onConstructor=@__(@JsonCreator))
public class TestFoo {
    @JsonProperty("xoom")
    public final String x;
    @JsonProperty("z")
    public final int z;
}

এটি getters (+ setters) এর সাথেও কাজ করা উচিত।


4
এটি আমার সমস্যা সমাধান! তোমাকে অনেক ধন্যবাদ! আমি বসন্ত-বুট-সংহতকরণ এবং JSON এবং POJOs এর মধ্যে সিরিয়ালাইজেশনে আটকে গিয়েছি এবং ত্রুটি পেয়েছি: Can not deserialize instance of java.lang.String out of START_OBJECT token... এবং এটি ঠিক করেছে! আমি যে থাকতে হবে @JsonPropertyপ্রতিটি কন্সট্রাকটর প্যারামিটার এবং যে উপরন্তু জন্য টীকা @AllArgsConstructorযে যন্ত্র থেকে Lombok অনুমতি দেয়।
মার্ক

1

আপনি যদি জ্যাকসনকে তার "মিক্সিন" প্যাটার্নটি ব্যবহার করেন তবে প্রায় কোনও কিছু নিয়ে খেলতে পারবেন । মূলত, এটি আপনাকে জ্যাকসন টীকাগুলি একটি বিদ্যমান শ্রেণিতে আসলে that শ্রেণীর পরিবর্তন না করে যুক্ত করার উপায় দেয়। আমি এখানে লম্বোকের সমাধানের পরিবর্তে এটির সুপারিশ করার দিকে ঝুঁকছি কারণ জ্যাকসন একটি জ্যাকসন বৈশিষ্ট্যযুক্ত সমস্যাটি সমাধান করে কারণ এটি দীর্ঘমেয়াদী কাজ করার সম্ভাবনা বেশি।


1

আমি আমার সমস্ত ক্লাস এইভাবে টীকায়িত করেছি:

@JsonAutoDetect(fieldVisibility = Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@Data
@Accessors(fluent = true)
@NoArgsConstructor
@AllArgsConstructor

এটি কমপক্ষে কয়েক বছর ধরে সমস্ত লম্বোক এবং জ্যাকসনের সংস্করণ নিয়ে কাজ করেছিল।

উদাহরণ:

@JsonAutoDetect(fieldVisibility = Visibility.ANY)
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@Data
@Accessors(fluent = true)
@NoArgsConstructor
@AllArgsConstructor
public class Person {
    String id;
    String first;
    String last;
}

এবং এটাই. লম্বোক এবং জ্যাকসন একসাথে কবজ খেলেন play


9
এটি পার্সোনাল ক্লাস।
asukaszG

0
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public class Person {
   String id;
   String first;
   String last;
}

ডেটা ক্লাসে অতিরিক্ত, এটি অবজেক্টম্যাপারটি সঠিকভাবে কনফিগার করা উচিত। এই ক্ষেত্রে, এটি একটি প্যারামিটারনামস মোডিয়ুল কনফিগারেশন এবং ফিল্ডস এবং ক্রিয়েটর পদ্ধতিগুলির দৃশ্যমানতা সেট করার সাথে ঠিক কাজ করছে is

    om.registerModule(new ParameterNamesModule());
    om.setVisibility(FIELD, JsonAutoDetect.Visibility.ANY);
    om.setVisibility(CREATOR, JsonAutoDetect.Visibility.ANY);

তারপরে এটি প্রত্যাশা অনুযায়ী কাজ করা উচিত।


0

লম্বোককে ConstructorProperiesটীকাটি না যুক্ত করার জন্য আমার সমস্যা ছিল তাই অন্যভাবে গিয়েছিল এবং জ্যাকসনকে সেই টীকাগুলি দেখার থেকে অক্ষম করে।

অপরাধী হলেন জ্যাকসন অ্যানোটেশন ইন্ট্রোস্পেক্টর.ফাইন্ডক্রিটর অ্যানোটেশন । বিজ্ঞপ্তি:

if (_cfgConstructorPropertiesImpliesCreator
            && config.isEnabled(MapperFeature.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES)

জ্যাকসন অ্যানোটেশন ইন্ট্রোস্পেক্টর.সেট কনস্ট্রাক্টরপ্রোপার্টিআইম্প্লি ক্রিয়েটরটিও লক্ষ্য করুন :

public JacksonAnnotationIntrospector setConstructorPropertiesImpliesCreator(boolean b)
{
    _cfgConstructorPropertiesImpliesCreator = b;
    return this;
}

তাই দুটি বিকল্প, হয় সেট MapperFeature.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIESমিথ্যাতে বা তৈরি JacksonAnnotationIntrospectorসেট setConstructorPropertiesImpliesCreatorকরতে falseএবং এই সেট AnnotationIntrospectorমধ্যে ObjectMapperমাধ্যমে ObjectMapper.setAnnotationIntrospector

কয়েকটি জিনিস লক্ষ্য করুন, আমি জ্যাকসন ২.৮.১০ ব্যবহার করছি এবং সেই সংস্করণটিতে MapperFeature.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIESকোনও উপস্থিতি নেই। জ্যাকসনের কোন সংস্করণে এটি যুক্ত হয়েছিল তা আমি নিশ্চিত নই। সুতরাং এটি না থাকলে, JacksonAnnotationIntrospector.setConstructorPropertiesImpliesCreatorপ্রক্রিয়াটি ব্যবহার করুন ।


0

আপনার এই মডিউলটিও থাকা উচিত। https://github.com/FasterXML/jackson-modules-java8

তারপরে আপনার সংকলকের জন্য -পরিমিতি পতাকা চালু করুন।

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>

0

আমি এক মুহুর্তের জন্যও এর সাথে লড়াই করেছি। তবে এখানে ডকুমেন্টেশনের মাধ্যমে আমি দেখতে পাচ্ছি যে অনকন্সট্রাক্টর টিকা প্যারামিটারটি পরীক্ষামূলক হিসাবে বিবেচিত এবং এটি আমার আইডিই (এসটিএস 4) তে ভাল সমর্থন করে না। জ্যাকসন ডকুমেন্টেশন অনুসারে, ব্যক্তিগত সদস্যরা ডিফল্টরূপে সিরিয়ালযুক্ত হয় না (ডি)। এটি সমাধানের দ্রুত উপায় রয়েছে।

JsonAutoDetect টীকা যুক্ত করুন এবং সুরক্ষিত / ব্যক্তিগত সদস্যদের সনাক্ত করতে এটি যথাযথভাবে সেট করুন। এটি ডিটিওগুলির জন্য সুবিধাজনক

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
public class SomeClass

@ জসনক্রিটার টীকা সহ একটি কারখানার ফাংশন যুক্ত করুন, আপনার যদি কিছু অবজেক্টের বৈধতা বা অতিরিক্ত রূপান্তর প্রয়োজন হয় তবে এটি সর্বোত্তম কাজ করে।

public class SomeClass {

   // some code here

   @JsonCreator
   public static SomeClass factory(/* params here dressing them in @JsonProperty annotations*/) {
      return new SomeClass();
   }
}

অবশ্যই আপনি নিজের মধ্যে নিজেই কন্সট্রাক্টর যুক্ত করতে পারেন।


-1

আমার একটি আলাদা সমস্যা ছিল এবং এটি বুলিয়ান আদিম ধরণের সাথে ছিল।

private boolean isAggregate;

ফলস্বরূপ এটি নিম্নলিখিত ত্রুটিটি ছুঁড়ে ফেলছিল

Exception: Unrecognized field "isAggregate" (class 

Lambok ধর্মান্তরিত isAggregateকরার isAggregate()একটি সংগ্রহকারী সম্পত্তি উপার্জন অভ্যন্তরীণভাবে যেমন Lombok করার aggregateপরিবর্তে isAggregate। জ্যাকসন লাইব্রেরি এটি পছন্দ করে না এবং এর isAggregateপরিবর্তে এটির জন্য সম্পত্তি প্রয়োজন ।

এই ইস্যুটি সম্পর্কে কাজ করার জন্য আমি আরামে বুলেটটিকে র্যাপার বুলিয়ানকে আপডেট করেছি। আপনার জন্য অন্যান্য বিকল্প রয়েছে যদি আপনি booleanপ্রকারগুলি নিয়ে কাজ করে থাকেন তবে নীচের উল্লেখটি দেখুন।

সল:

private Boolean isAggregate;

রেফ: https://www.baeldung.com/lombok-getter-boolean


আপনি কি আদিম প্রকারের সাথে একত্রিতের পরিবর্তে সমষ্টি ব্যবহার করার চেষ্টা করেছিলেন? আমি বিশ্বাস করি, এটি ত্রুটিটিও সমাধান করতে পারে। দয়া করে এই স্ট্যাকওভারফ্লোটিও
মুহাম্মদ ওয়াকাস দিলওয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.