<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vigneshwaralingam</title>
    <description>The latest articles on DEV Community by Vigneshwaralingam (@vigneshwaralingam).</description>
    <link>https://dev.to/vigneshwaralingam</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2949333%2Fd6512d7d-f6f2-4ff1-89fd-69537800cd10.jpg</url>
      <title>DEV Community: Vigneshwaralingam</title>
      <link>https://dev.to/vigneshwaralingam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vigneshwaralingam"/>
    <language>en</language>
    <item>
      <title>The Bug I Found When Special Characters Broke My API</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Mon, 06 Apr 2026 17:40:08 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/the-bug-i-found-when-special-characters-broke-my-api-4bmc</link>
      <guid>https://dev.to/vigneshwaralingam/the-bug-i-found-when-special-characters-broke-my-api-4bmc</guid>
      <description>&lt;p&gt;Today, I worked on a simple Spring Boot API, but it taught me an important lesson about handling user input properly.&lt;/p&gt;

&lt;p&gt;I created an endpoint to add a scope of work to a project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@PostMapping&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/addScopeOfWork/{projectId}/{scopeOfWork}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
 &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;ManageProject&lt;/span&gt; &lt;span class="nf"&gt;addScopeOfWork&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@PathVariable&lt;/span&gt; &lt;span class="nc"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;projectId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nd"&gt;@RequestBody&lt;/span&gt; &lt;span class="nc"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
 &lt;span class="o"&gt;{&lt;/span&gt;
 &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;scopeOfWork&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scopeOfWork"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
 &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addScopeOfWork&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;projectId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scopeOfWork&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
 &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first  , everything is  fine.&lt;/p&gt;

&lt;p&gt;When I tested the API with normal text, it worked perfectly.&lt;/p&gt;

&lt;p&gt;But when I passed special characters like:&lt;/p&gt;

&lt;p&gt;&amp;amp;&lt;br&gt;
/&lt;br&gt;
?&lt;br&gt;
%&lt;/p&gt;

&lt;p&gt;The API started crashing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Did This Happen?&lt;/strong&gt;&lt;br&gt;
/addScopeOfWork/{projectId}/{scopeOfWork}&lt;/p&gt;

&lt;p&gt;Here, scopeOfWork is part of the URL (path variable).&lt;/p&gt;

&lt;p&gt;Special characters are not safe inside URLs unless they are encoded.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;/ is treated as a path separator&lt;br&gt;
? starts query parameters&lt;br&gt;
&amp;amp; separates parameters&lt;/p&gt;

&lt;p&gt;So the server misunderstand the input and breaks the request&lt;/p&gt;

&lt;p&gt;Instead of passing scopeOfWork in the URL, I moved it to the request body.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@PostMapping&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/addScopeOfWork/{projectId}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; 
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;ManageProject&lt;/span&gt; &lt;span class="nf"&gt;addScopeOfWork&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@PathVariable&lt;/span&gt; &lt;span class="nc"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;projectId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nd"&gt;@RequestBody&lt;/span&gt; &lt;span class="nc"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; 
&lt;span class="o"&gt;{&lt;/span&gt; 
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;scopeOfWork&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"scopeOfWork"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addScopeOfWork&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;projectId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scopeOfWork&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the request looks like:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "scopeOfWork": "Fix login &amp;amp; payment issues / urgent"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;---This works perfectly because:&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Never pass user input with special characters in URL path variables&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always use request body for text data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understand how HTTP URLs work before designing APIs&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Sometimes small bugs teach the biggest lessons.&lt;/p&gt;

&lt;p&gt;This issue helped me understand how important proper API design is — especially when handling real-world data.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Just because it works with simple input doesn’t mean it works in real-world scenarios.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>api</category>
      <category>backend</category>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>Going Back to My School: Where My Habits, Goals, and Dreams Were Born</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Sat, 14 Feb 2026 18:51:19 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/going-back-to-my-school-where-my-habits-goals-and-dreams-were-born-3e5b</link>
      <guid>https://dev.to/vigneshwaralingam/going-back-to-my-school-where-my-habits-goals-and-dreams-were-born-3e5b</guid>
      <description>&lt;p&gt;Today, I went to my school for the 81st  Annual Day celebration — the same school where I studied from 1st to 8th standard. Walking into that place after so many years felt like stepping back into my childhood.&lt;/p&gt;

&lt;p&gt;I met my teachers — my English teacher, my 5th standard teacher, science teachers, and our headmistress. I also met my school friends from classes 1 to 8. Seeing everyone again brought back so many memories.&lt;/p&gt;

&lt;p&gt;I met Muthammal (classmate)  , who studied with me from 6th to 8th standard. She is now married and has two children. Life has changed so much,&lt;br&gt;
One of the most emotional moments was seeing the tree we planted together during our 6th–8th standard days. That tree is still there, growing strong — just like the memories we created in that school.and anand i met him after long time.&lt;/p&gt;

&lt;p&gt;Some buildings are no longer there, but many things remain exactly the same as they were during our school days. As we walked around, we spoke about our memories — how we participated in annual day programs, how excited we were to stand on stage, and how proud we felt when we won prizes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goals I Set as a School Student
&lt;/h2&gt;

&lt;p&gt;During my school days (1st to 8th standard), I always had three goals:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;To win a sports prize&lt;/li&gt;
&lt;li&gt;To get a no-leave prize&lt;/li&gt;
&lt;li&gt;To become a rank holder (1st rank)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I set these goals seriously during my 6th and 7th standards, but I couldn’t achieve them then. I felt disappointed — but I didn’t give up.&lt;/p&gt;

&lt;p&gt;In 8th standard, everything changed.&lt;/p&gt;

&lt;p&gt;I won three prizes in one year:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;1st prize in long jump&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No-leave prize&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1st rank&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From 1st to 8th standard, I studied only in this school. I don’t know if anyone else achieved all these together —maybe someone did, maybe not — but for me, it was a huge personal victory.&lt;/p&gt;

&lt;p&gt;I remember telling myself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Before I leave this school, I must win all three prizes.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it really happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons That Stayed in My Blood
&lt;/h2&gt;

&lt;p&gt;During my last few school days, I stopped talking to some boys. and teachers try to convince me to spoke to them.&lt;br&gt;
I also used to come late regularly — and honestly, even today, these habits are still with me. Some things never change; they become part of our blood.&lt;/p&gt;

&lt;p&gt;But this school also gave me discipline, confidence, and short-term goal setting — habits that still guide my life.&lt;/p&gt;

&lt;p&gt;Teachers Who Changed My Life&lt;/p&gt;

&lt;p&gt;We used to call our English teacher “Blade” because her advice was always sharp and honest. One day she said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I am a sharp blade, not an unsharp blade.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That line is still fresh in my mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  When I spoke with my teachers this time, they told me something very special:
&lt;/h2&gt;

&lt;p&gt;My 5th standard teacher(vassuki)try to get remember my name through this..&lt;br&gt;&lt;br&gt;
I was from the first batch of students who won prizes through the NMMS scholarship, and many students were selected after that.&lt;br&gt;
At first, my teacher couldn’t remember my name — but suddenly she remembered me while talking. That moment touched my heart deeply.&lt;/p&gt;

&lt;p&gt;Because of the NMMS scholarship, I was able to buy the mobile phone I am using today. That support changed my life.&lt;/p&gt;

&lt;p&gt;When I won, the school even put up a banner in the village. Seeing that banner pushed me strongly to believe:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“One day, I must give something back — especially through education.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Proud to Be a Government School Student
&lt;/h2&gt;

&lt;p&gt;Maybe because I studied in a government school, I always feel a strong responsibility to guide others. Even today, I believe that my future — and my children’s future — should stay connected to government education, just like this school where I studied.&lt;/p&gt;

&lt;p&gt;One sentence my teacher once corrected still stays with me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You should say ‘at least’, not ‘as atleast’.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I will never forget that.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Funny Memory I’ll Never Forget 😄
&lt;/h2&gt;

&lt;p&gt;The day after Annual Day, I came late again — but still won three prizes.&lt;br&gt;
One prize stuck with other price  broke  , and everyone tried to split  it.  and then i try it to split by put it on the windows gaps on the iron bars. I pulled it and took it.&lt;br&gt;
 and english teacher said&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"athu avanoda price avan vitruvana atha".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That moment still makes me smile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Little Details I’ll Never Forget
&lt;/h2&gt;

&lt;p&gt;My birthday is on 17th September, and my English teacher’s birthday is on 18th September. That closeness always felt special to me.&lt;/p&gt;

&lt;p&gt;My English teacher taught me something very important:&lt;/p&gt;

&lt;p&gt;Present: read (pronounced "reed")&lt;br&gt;
Past Tense: read (pronounced "red")&lt;br&gt;
Past Participle: read (pronounced "red")..&lt;/p&gt;

&lt;p&gt;Past Tense: Yesterday, I read (red) that book.&lt;br&gt;
Past Participle: I have read (red) that book already.  &lt;/p&gt;

&lt;p&gt;Small corrections like this shaped my confidence in English. and this is still helped me on my college papers and interviews.&lt;/p&gt;

&lt;p&gt;One day, I thought I had fever and sat quietly in class. My English teacher suddenly asked everyone:&lt;/p&gt;

&lt;p&gt;“What is your aim?”&lt;/p&gt;

&lt;p&gt;and every one came front and said something..&lt;br&gt;
when my turn is come ,i went front and tell"............."&lt;br&gt;
did u remember??( to english teacher.)&lt;br&gt;
then i answered u said clap everyone.. and every one ask why what he said ... and u explained it..&lt;/p&gt;

&lt;h2&gt;
  
  
  Discipline That Shaped Me
&lt;/h2&gt;

&lt;p&gt;During my school days, I once used bad words at home. My mother came to school and complained to the teacher.&lt;/p&gt;

&lt;p&gt;In front of the whole class, my teacher said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"everyone should call him as "..bad person.."" &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That moment was painful and embarrassing — but it changed me forever. It taught me self-control and respect.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Flashback From College Life
&lt;/h2&gt;

&lt;p&gt;When I moved to college, I spoke freely with everyone and did many things. There, bad words were spoken very casually by many people.&lt;/p&gt;

&lt;p&gt;One day, my friend George told me:&lt;/p&gt;

&lt;p&gt;“I like you because even though you mix with everyone, you never use bad words.”&lt;/p&gt;

&lt;p&gt;That was a very special moment for me. I realized that my school and teachers had quietly shaped my character.&lt;/p&gt;

&lt;h2&gt;
  
  
  Teachers I Still Miss
&lt;/h2&gt;

&lt;p&gt;I   miss my Maths teacher and  4th standard teacher  — I’m sorry I’ve forgotten her name.&lt;br&gt;
I also miss Saraswathy teacher and Latha teacher.and drawing sir music teacher, Sewing Tailoring Teacher.&lt;/p&gt;

&lt;h2&gt;
  
  
  About Our Music Teacher
&lt;/h2&gt;

&lt;p&gt;One of my friends, &lt;strong&gt;Anand&lt;/strong&gt;, recently met our music teacher by chance.&lt;br&gt;&lt;br&gt;
Even after so many years, she recognized him &lt;strong&gt;by his voice&lt;/strong&gt; and asked him,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“How are you?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;She may be &lt;strong&gt;blind by her eyes&lt;/strong&gt;, but &lt;strong&gt;not by her heart&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
That moment reminded me how deeply teachers touch our lives — sometimes in ways that go beyond sight and time.&lt;/p&gt;

&lt;p&gt;In school, we always used to call them just “Teacher, Teacher”. Remembering teacher’s names later feels like a big task — but the values they taught us are unforgettable.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Memory from My 8th Standard – Writing a Poem About My Mother
&lt;/h2&gt;

&lt;p&gt;During my 8th standard, our teacher gave us an English assignment to write a poem about our mother. &lt;/p&gt;

&lt;p&gt;Every Sunday, a newspaper used to come to our house. In that paper, there was a section in Dinamalar where poems were published. I think it was for Mother’s Day special. here they writen a poem about Mother.&lt;/p&gt;

&lt;p&gt;I read one poem about a mother from that newspaper, and I liked it very much. I copy that poem from the paper and put on my assignment and I cut that poster from the paper pasted it for my assignment.&lt;/p&gt;

&lt;p&gt;Later, the teacher asked everyone to read their poems in front of the class. When my turn came, I read it.&lt;/p&gt;

&lt;p&gt;After listening, the teacher said,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I feel like I have read this poem somewhere before.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I became a little scared. I thought,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Maybe they think I copied it, and they may reduce my marks.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But the teacher smiled and said,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It’s okay. At least you read it well and understood it.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then she appreciated me in front of the whole class, and everyone clapped. That moment made me very happy.&lt;/p&gt;

&lt;p&gt;After that day, I started going regularly to the nearby mad Pot shop to read newspapers. I thought,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Maybe this will help me for my next assignment.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That habit stayed with me for a long time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Distribution Function – A Moment of Surprise
&lt;/h2&gt;

&lt;p&gt;During the &lt;strong&gt;prize distribution function&lt;/strong&gt;, I was truly shocked.&lt;br&gt;&lt;br&gt;
I could hear the names of &lt;strong&gt;so many different games&lt;/strong&gt; being announced — games that didn’t exist during our time.&lt;/p&gt;

&lt;p&gt;I also noticed that the &lt;strong&gt;new generation students’ names&lt;/strong&gt; sounded very different from ours.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Listening to all this made me realize how times change — new games, new names, new generations — but the spirit of school celebrations remains the same.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>schoollife</category>
    </item>
    <item>
      <title>The Zombie Entity: Why my Spring Boot API returned "200 OK" but refused to Delete</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Tue, 10 Feb 2026 18:03:01 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/the-zombie-entity-why-my-spring-boot-api-returned-200-ok-but-refused-to-delete-46f3</link>
      <guid>https://dev.to/vigneshwaralingam/the-zombie-entity-why-my-spring-boot-api-returned-200-ok-but-refused-to-delete-46f3</guid>
      <description>&lt;h2&gt;
  
  
    In Spring Boot and JPA, Bidirectional relationships require bidirectional management. You can't just delete the child; you have to break the link from the parent side too.Here is my simple demo for this.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/pulse/why-my-spring-boot-api-returned-200-ok-refused-delete-m-vzt4c" rel="noopener noreferrer"&gt;linkedinPost&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever written a standard &lt;code&gt;delete&lt;/code&gt; function, tested it, got a &lt;strong&gt;200 OK&lt;/strong&gt; success response, but when you checked the database, the record was still watching at you?&lt;/p&gt;

&lt;p&gt;I recently faced this exact issue while building the &lt;strong&gt;Invoice Module&lt;/strong&gt; for my project, &lt;strong&gt;Rytways&lt;/strong&gt;. I was trying to delete an item from an invoice. The frontend said "Success", the backend said "OK", but the data refused to die. It was a &lt;strong&gt;Zombie Object&lt;/strong&gt;. 🧟‍♂️&lt;/p&gt;

&lt;p&gt;Here is the breakdown of the problem, the code involved, and the fix.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. The Setup (The Entities)
&lt;/h3&gt;

&lt;p&gt;I have a Bidirectional One-to-Many relationship between an &lt;strong&gt;Invoice Header&lt;/strong&gt; (Parent) and &lt;strong&gt;Invoice Details&lt;/strong&gt; (Child).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Parent (&lt;code&gt;InvoiceHeaderEntity.java&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
Notice the &lt;code&gt;CascadeType.ALL&lt;/code&gt; and &lt;code&gt;orphanRemoval = true&lt;/code&gt;. This implies that the Header controls the lifecycle of its details.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Entity&lt;/span&gt;
&lt;span class="nd"&gt;@Getter&lt;/span&gt;
&lt;span class="nd"&gt;@Setter&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InvoiceHeaderEntity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;BaseEntity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nd"&gt;@Id&lt;/span&gt;
    &lt;span class="nd"&gt;@GeneratedValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strategy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GenerationType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;AUTO&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;invoiceHeaderId&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// The Parent holds a list of children&lt;/span&gt;
    &lt;span class="nd"&gt;@OneToMany&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mappedBy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"invoiceHeader"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cascade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;CascadeType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ALL&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orphanRemoval&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fetch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FetchType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EAGER&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nd"&gt;@JsonIgnoreProperties&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoiceHeader"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;InvoiceDetailsEntity&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;invoiceDetails&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// ... other fields&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The Child (&lt;code&gt;InvoiceDetailsEntity.java&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Entity&lt;/span&gt;
&lt;span class="nd"&gt;@Data&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InvoiceDetailsEntity&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;BaseEntity&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nd"&gt;@Id&lt;/span&gt;
    &lt;span class="nd"&gt;@GeneratedValue&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strategy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GenerationType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;AUTO&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;invoiceDetailsId&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@ManyToOne&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fetch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;FetchType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;EAGER&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nd"&gt;@JsonIgnoreProperties&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"invoiceDetails"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nd"&gt;@JoinColumn&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"invoice_header_id"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nullable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;InvoiceHeaderEntity&lt;/span&gt; &lt;span class="n"&gt;invoiceHeader&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// ... other fields&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2. The Problem (The "Zombie" Effect)
&lt;/h3&gt;

&lt;p&gt;When I called the standard &lt;code&gt;repository.deleteById(id)&lt;/code&gt; on the child, Hibernate did something tricky:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Loading:&lt;/strong&gt; Because of &lt;code&gt;FetchType.EAGER&lt;/code&gt;, loading the Child to delete it &lt;em&gt;also&lt;/em&gt; loaded the Parent (&lt;code&gt;InvoiceHeader&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory State:&lt;/strong&gt; The loaded Parent entity still had the Child in its &lt;code&gt;invoiceDetails&lt;/code&gt; list in memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Conflict:&lt;/strong&gt; I told the Repo to delete the Child. But when the transaction tried to commit, Hibernate checked the Parent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resurrection:&lt;/strong&gt; Hibernate saw the Child was still in the Parent's list. Since &lt;code&gt;CascadeType.ALL&lt;/code&gt; is active, Hibernate prioritized the Parent's state and effectively canceled the deletion (or re-saved the child).&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqwmsanexdba8e39teq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqwmsanexdba8e39teq6.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The Fix (The Service Layer)
&lt;/h3&gt;

&lt;p&gt;To fix this, we cannot just delete the child. We must &lt;strong&gt;remove the child from the parent's list&lt;/strong&gt; and let &lt;code&gt;orphanRemoval=true&lt;/code&gt; handle the database deletion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;InvoiceDetailsService.java&lt;/code&gt; (Corrected Code):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Service&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InvoiceDetailsService&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Autowired&lt;/span&gt;
    &lt;span class="nc"&gt;InvoiceDetailsRepo&lt;/span&gt; &lt;span class="n"&gt;invoiceDetailsRepo&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="nd"&gt;@Autowired&lt;/span&gt;
    &lt;span class="nc"&gt;InvoiceHeaderRepo&lt;/span&gt; &lt;span class="n"&gt;invoiceHeaderRepo&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;deleteInvoiceDetails&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// 1. Find the item to be deleted&lt;/span&gt;
        &lt;span class="nc"&gt;InvoiceDetailsEntity&lt;/span&gt; &lt;span class="n"&gt;detail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;invoiceDetailsRepo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;findById&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
                &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;orElseThrow&lt;/span&gt;&lt;span class="o"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;RuntimeException&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Item not found"&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;

        &lt;span class="c1"&gt;// 2. Get the parent Header&lt;/span&gt;
        &lt;span class="nc"&gt;InvoiceHeaderEntity&lt;/span&gt; &lt;span class="n"&gt;header&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;detail&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInvoiceHeader&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;header&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// 3. THE FIX: Remove the item from the parent's list.&lt;/span&gt;
            &lt;span class="c1"&gt;// Using removeIf ensures we match by ID and avoid object reference issues.&lt;/span&gt;
            &lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInvoiceDetails&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;removeIf&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getInvoiceDetailsId&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;equals&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;

            &lt;span class="c1"&gt;// 4. Save the Header. &lt;/span&gt;
            &lt;span class="c1"&gt;// Because 'orphanRemoval = true', JPA deletes the item from DB &lt;/span&gt;
            &lt;span class="c1"&gt;// automatically since it's no longer in the list.&lt;/span&gt;
            &lt;span class="n"&gt;invoiceHeaderRepo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;save&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// Fallback if no header exists&lt;/span&gt;
            &lt;span class="n"&gt;invoiceDetailsRepo&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;deleteById&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Invoice Details is deleted :Id: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  4. The Controller
&lt;/h3&gt;

&lt;p&gt;The controller remains simple. It just call  updated service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;InvoiceDetailsController.java&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@RestController&lt;/span&gt;
&lt;span class="nd"&gt;@RequestMapping&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/invoiceDetails"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;InvoiceDetailsController&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Autowired&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;InvoiceDetailsService&lt;/span&gt; &lt;span class="n"&gt;invoiceDetailsService&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@DeleteMapping&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/delete/{id}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;ResponseEntity&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;deleteInvoiceDetails&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nd"&gt;@PathVariable&lt;/span&gt; &lt;span class="nc"&gt;Long&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// We don't need to manually calculate summary here anymore &lt;/span&gt;
        &lt;span class="c1"&gt;// if the service handles the relationship correctly.&lt;/span&gt;
        &lt;span class="n"&gt;invoiceDetailsService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;deleteInvoiceDetails&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ResponseEntity&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;"Invoice details deleted successfully"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;HttpStatus&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;OK&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  5. The Frontend (React)
&lt;/h3&gt;

&lt;p&gt;On the client side, I call this API. If the response is OK, I remove the item from the UI state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;NewSales.js&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handleDelete&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Calling the Spring Boot API&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;del&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/invoiceDetails/delete/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deleted data response..&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nc"&gt;AlertHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Item deleted&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;success&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

      &lt;span class="c1"&gt;// Update the UI state to reflect the deletion immediately&lt;/span&gt;
      &lt;span class="c1"&gt;// This prevents the user from seeing the item until a refresh&lt;/span&gt;
      &lt;span class="nf"&gt;setItemFormData&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;invoiceDetailsId&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

      &lt;span class="c1"&gt;// Optionally reload the full data to ensure sync with DB&lt;/span&gt;
      &lt;span class="c1"&gt;// await loadInvoiceDetails();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nc"&gt;AlertHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Failed to delete item&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;danger&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Takeaway
&lt;/h3&gt;

&lt;p&gt;In Full Stack development, a "200 OK" doesn't always mean the data operation went as planned. When using JPA/Hibernate, &lt;strong&gt;Bidirectional relationships require bidirectional management.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you delete a child, make sure the parent knows about it!&lt;/p&gt;




</description>
      <category>backend</category>
      <category>database</category>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>If our tables could predict the future?</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Wed, 04 Feb 2026 17:40:43 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/if-our-tables-could-predict-the-future-1981</link>
      <guid>https://dev.to/vigneshwaralingam/if-our-tables-could-predict-the-future-1981</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.tourl"&gt;&lt;/a&gt;I recently attended an  webinar hosted by Syncfusion that opened my eyes to the power of integrating AI into standard UI components. As a developer, we are used to displaying dynamic data in tables.But what if our tables could predict the future?&lt;/p&gt;

&lt;p&gt;In this post, I’ll share how I built a "Predictive Student Grade Tracker" using the Syncfusion React Data Grid and Azure OpenAI.&lt;/p&gt;

&lt;p&gt;The Use Case: Imagine a college dashboard where a professor sees a list of students with their GPAs for Year 1, Year 2, and Year 3. Instead of manually predict thier future marks, we want the application to automatically predict the Year 4 CGPA based on their past performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatvwdhql855rh0yfn5wt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatvwdhql855rh0yfn5wt.png" alt=" " width="800" height="315"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { loadCultureFiles } from '../common/culture-loader';

import { Grid, Toolbar, Page, QueryCellInfoEventArgs } from '@syncfusion/ej2-grids';
import { Button } from '@syncfusion/ej2/buttons';

import { predictiveData, predictive } from './data-source';

/**
 * Predictive Data Entry
 */


    loadCultureFiles();
    Grid.Inject(Page, Toolbar);

    let grid: Grid = new Grid({
        dataSource: predictiveData,
        toolbar: [{ template: `&amp;lt;button id='calculate_Grade'&amp;gt;Calculate Grade&amp;lt;/button&amp;gt;` }],
        queryCellInfo: CustomizeCell,
        columns: [
            { field: 'StudentID', isPrimaryKey: true, headerText: 'Student ID', textAlign: 'Right', width: 100 },
            { field: 'StudentName', headerText: 'Student Name', width: 100 },
            { field: 'FirstYearGPA', textAlign: 'Center', headerText: 'First Year GPA', width: 100 },
            { field: 'SecondYearGPA', headerText: 'Second Year GPA', headerTextAlign: 'Center', textAlign: 'Center', width: 100 },
            { field: 'ThirdYearGPA', headerText: 'Third Year GPA', headerTextAlign: 'Center', textAlign: 'Center', width: 100 },
            { field: 'FinalYearGPA', headerText: 'Final Year GPA', visible: false, headerTextAlign: 'Center', textAlign: 'Center', width: 100 },
            { field: 'TotalGPA', headerText: 'Total GPA', visible: false, headerTextAlign: 'Center', textAlign: 'Center', width: 100 },
            { field: 'TotalGrade', headerText: 'Total Grade', visible: false, headerTextAlign: 'Center', textAlign: 'Center', width: 100 },
        ],
        enableHover: false,
        created: created
    });
    grid.appendTo('#Grid');

    function created() {
        let button = document.getElementById('calculate_Grade') as HTMLButtonElement;
        button.onclick = CalculateGrade;
        new Button({ isPrimary: true }, '#calculate_Grade');
    }

    function CalculateGrade() {
        grid.showSpinner();
        ExecutePrompt();
    }

    function delay(ms: number) {
        return new Promise((resolve) =&amp;gt; setTimeout(resolve, ms));
    }

    function ExecutePrompt() {
        const prompt: string = 'Final year GPA column should updated based on GPA of FirstYearGPA, SecondYearGPA and ThirdYearGPA columns. Total GPA should update based on average of all years GPA. Total Grade update based on total GPA. Updated the grade based on following details, 0 - 2.5 = F, 2.6 - 2.9 = C, 3.0 - 3.4 = B, 3.5 - 3.9 = B+, 4.0 - 4.4 = A, 4.5 - 5 = A+. average value decimal should not exceed 1 digit.';
        const gridReportJson: string = JSON.stringify(grid.dataSource);
        const userInput: string = generatePrompt(gridReportJson, prompt);
        let aiOutput: any = (window as any).getAzureChatAIRequest({ messages: [{ role: 'user', content: userInput }] });
        aiOutput.then((result: any) =&amp;gt; {
            result = result.replace('```

json', '').replace('

```', '');
            const generatedData: predictive[] = JSON.parse(result);
            grid.hideSpinner();
            if (generatedData.length) {
                grid.showColumns(['Final Year GPA', 'Total GPA', 'Total Grade']);
                updateRows(generatedData);
            }
        });
    }

    async function updateRows(generatedData: predictive[]) {
        await delay(300);
        for (let i: number = 0; i &amp;lt; generatedData.length; i++) {
            const item = generatedData[i];
            grid.setRowData(item.StudentID, item);
            await delay(300);
        }
    }

    function CustomizeCell(args: QueryCellInfoEventArgs) {
        if (args.column!.field === 'FinalYearGPA' || args.column!.field === 'TotalGPA') {
            if ((args.data as predictive).FinalYearGPA! &amp;gt; 0) {
                args.cell!.classList.add('e-PredictiveColumn');
            }
            else if ((args.data as predictive).TotalGPA! &amp;gt; 0) {
                args.cell!.classList.add('e-PredictiveColumn');
            }
        }
        if (args.column!.field === 'TotalGrade') {
            if ((args.data as predictive).TotalGPA! &amp;lt;= 2.5) {
                args.cell!.classList.add('e-inactivecolor');
            }
            else if ((args.data as predictive).TotalGPA! &amp;gt;= 4.5) {
                args.cell!.classList.add('e-activecolor');
            }
            else if ((args.data as predictive).TotalGPA! &amp;gt; 0) {
                args.cell!.classList.add('e-PredictiveColumn');
            }
        }
    }

    function generatePrompt(data: string, userInput: string): string {
        return `Given the following datasource are bounded in the Grid table\n\n${data}.\n Return the newly prepared datasource based on following user query:  ${userInput}\n\nGenerate an output in JSON format only and Should not include any additional information or contents in response`;
    }    

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;1. First, the code creates a standard Syncfusion Data Grid with columns for:Student ID, Name 1st, 2nd, and 3rd Year GPA
2.Inside the created() function, it adds a button called "Calculate Grade" to the toolbar.
3.When a user clicks this button, it triggers the CalculateGrade() function.
4.ExecutePrompt():
here we tell the prompt and give the datasource to predict.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It takes the current rows from the grid (grid.dataSource) and converts them into a text format (JSON).&lt;/p&gt;

&lt;p&gt;It sends both the Data and the Prompt to Azure OpenAI (getAzureChatAIRequest).&lt;br&gt;
5.Once the AI finishes thinking and send the data&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixh74696pr0bypedf2f7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fixh74696pr0bypedf2f7.png" alt=" " width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The final output is a dynamic data, the 4th column is generated entirely by AI.&lt;/p&gt;

&lt;p&gt;github link:-&lt;a href=""&gt;https://github.com/syncfusion/smart-ai-samples/tree/master/typescript&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;demo:[]-&lt;a href="https://dev.tourl"&gt;https://ej2.syncfusion.com/demos/#/bootstrap5/ai-grid/predictive-entry.html&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Have you ever faced the LazyInitializationException-JPA Architecture</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Sun, 25 Jan 2026 15:56:09 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/have-you-ever-faced-the-lazyinitializationexception-jpa-architecture-f9d</link>
      <guid>https://dev.to/vigneshwaralingam/have-you-ever-faced-the-lazyinitializationexception-jpa-architecture-f9d</guid>
      <description>&lt;p&gt;Hi everyone..If you understand JPA Architecture, you will understand exactly how data moves from your Java code to the Database tables.&lt;/p&gt;

&lt;p&gt;first of all ....What is JPA?&lt;/p&gt;

&lt;p&gt;JPA (Java Persistence API) is just a specification (a set of rules).In Spring Boot, when you use JPA, you are internally using Hibernate.&lt;/p&gt;

&lt;p&gt;There are 4 Main Components of JPA Architecture&lt;/p&gt;

&lt;p&gt;1.Entity&lt;/p&gt;

&lt;p&gt;2.EntityManagerFactory&lt;/p&gt;

&lt;p&gt;3.EntityManager&lt;/p&gt;

&lt;p&gt;4.Persistence Context &lt;/p&gt;

&lt;p&gt;Entity:&lt;/p&gt;

&lt;p&gt;It is just a simple Java Class with &lt;a class="mentioned-user" href="https://dev.to/entity"&gt;@entity&lt;/a&gt;&lt;br&gt;
It represents a single row in a table&lt;/p&gt;

&lt;p&gt;EntityManagerFactory:&lt;/p&gt;

&lt;p&gt;It create an EntityManager.&lt;br&gt;
It is created only once when your application starts.&lt;/p&gt;

&lt;p&gt;EntityManager:&lt;/p&gt;

&lt;p&gt;This is the most important part. &lt;br&gt;
It manages the database operations like Save, Update, Delete, Find.&lt;br&gt;
for every 1 Request = 1 EntityManager.&lt;/p&gt;

&lt;p&gt;Persistence Context:&lt;/p&gt;

&lt;p&gt;This is a temporary memory area inside the EntityManager.&lt;br&gt;
When you fetch a user from the DB, JPA puts it in this place.&lt;br&gt;
If you ask for that user again in the same transaction, JPA gives it from the place, not the Database.&lt;br&gt;
This is why JPA is fast .&lt;br&gt;
 but you will get "Lazy Loading" errors when the context is closed.&lt;/p&gt;

&lt;p&gt;Data flow:&lt;/p&gt;

&lt;p&gt;Your Controller calls the Service, which calls the Repository.&lt;br&gt;
The Repository uses the EntityManager to start a transaction.&lt;br&gt;
The EntityManager checks: "Is this user already in my Memory???&lt;br&gt;
If No: ----- Itis ready to send data to the DB.&lt;br&gt;
If Yes: ------- It updates the object in memory.&lt;br&gt;
then Hibernate takes the Java Object and converts it into a SQL&lt;br&gt;
Hibernate take this SQL to the JDBC driver.&lt;br&gt;
The Database executes the SQL and saves the row.&lt;/p&gt;

&lt;p&gt;The Main Feature:&lt;/p&gt;

&lt;p&gt;This is the main part of JPA Architecture.Because the EntityManager watches the Persistence Context, you dont always need to call .save().&lt;/p&gt;

&lt;p&gt;Example programs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; @Transactional // 1
public void updateUser(Long id) {
    User user = userRepository.findById(id).get(); //2
    user.setName("Vignesh"); //3   
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Start Transaction here the EntityManager will Open&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User is loaded into Persistence Context .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;here we modifd the object in code.The EntityManager sees the object in memory is different from the DB. so it is run the update query in sql...&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LazyInitializationException???&lt;/p&gt;

&lt;p&gt;Transient: it Just a Java object but not in DB.&lt;br&gt;
Persistent: In the DB and watched by the EntityManager &lt;br&gt;
Detached: In the DB but the transaction closed ,This is where Lazy Loading fails.&lt;/p&gt;

&lt;p&gt;So, next time you see a LazyInitializationException, you know exactly what happened: You tried to access data from a Detached object after the EntityManager had already closed its shift.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>database</category>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>Spring Data JPA Relationships</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Thu, 01 Jan 2026 16:41:22 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/spring-data-jpa-relationships-3ll7</link>
      <guid>https://dev.to/vigneshwaralingam/spring-data-jpa-relationships-3ll7</guid>
      <description>&lt;p&gt;hi guys.. Happy new year to all&lt;/p&gt;

&lt;p&gt;in my fullstack journey i am started working on projects in just 10 days from joining date. &lt;/p&gt;

&lt;p&gt;initialy i am struggeld in react and later it give me time to learn while working and now its little bit easy to work on. &lt;/p&gt;

&lt;p&gt;in the most of the backend i used only crud operation  but somes it could be the tough when it comes to mapping with many tables and table designing also hard ,i faced many errors and exceptions. &lt;/p&gt;

&lt;p&gt;in these days  my seniors designed the tables so will write logics for this tables ...(like they will told what to put on a entity class )&lt;/p&gt;

&lt;p&gt;but somestimes i tried my own ways it end in the exception and errors. but this also new learnings to me.&lt;/p&gt;

&lt;p&gt;i suggest u to watch this 2 video when u r leaerning spring Data JPA&lt;/p&gt;

&lt;p&gt;codesnippet&lt;br&gt;
&lt;a href="https://youtu.be/DsVy8XG2UNc?si=JrY9wxGJKAyYD0kF" rel="noopener noreferrer"&gt;part 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/HWliKlc-HiI?si=F1X6JvzM4Xie2M9Z" rel="noopener noreferrer"&gt;part 2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>java</category>
      <category>spring</category>
    </item>
    <item>
      <title>Lazy vs. Eager Loading &amp; JPA Relationships</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Fri, 26 Dec 2025 18:44:35 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/lazy-vs-eager-loading-jpa-relationships-4f22</link>
      <guid>https://dev.to/vigneshwaralingam/lazy-vs-eager-loading-jpa-relationships-4f22</guid>
      <description></description>
      <category>database</category>
      <category>java</category>
      <category>springboot</category>
      <category>performance</category>
    </item>
    <item>
      <title>Finally the demo login is Ready!!</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Thu, 25 Dec 2025 18:26:25 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/finally-the-demo-login-is-ready-3cin</link>
      <guid>https://dev.to/vigneshwaralingam/finally-the-demo-login-is-ready-3cin</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfg3qgq8no8kqnwott55.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfg3qgq8no8kqnwott55.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;finlly the login page is ready and it is wotking with jwt tokens and i move on to the dashboard page with simple ui &lt;br&gt;
in this project i am these are the things&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;java&lt;/li&gt;
&lt;li&gt;springboot&lt;/li&gt;
&lt;li&gt;react js(html,css,js)&lt;/li&gt;
&lt;li&gt;Bootstarp&lt;/li&gt;
&lt;li&gt;postgresql&lt;/li&gt;
&lt;li&gt;jasper softwere studio in future&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;my next blog will teach how i do this and codes will be shared stay alert!.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Replacing Phone Addiction with Building a Real Project</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Thu, 25 Dec 2025 16:40:38 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/replacing-phone-addiction-with-building-a-real-project-3m12</link>
      <guid>https://dev.to/vigneshwaralingam/replacing-phone-addiction-with-building-a-real-project-3m12</guid>
      <description>&lt;p&gt;hi guys .almoost one month to post my last blog.for the last one month it doesnot go good ,maybe the reason would be i did plan any days . so went over use on mobile and i lose my sleep cycle and working hours also spoiled on some perticular times . so i want to overcome this and decided to build a project to get back my normal sleep cycle..&lt;br&gt;
on working for this project i believe my self&lt;br&gt;
 i can do it project &lt;br&gt;
 i can comeback with my good habbits&lt;br&gt;
 i can improve my skills on fullstack&lt;br&gt;
 i can reduce my screen times.&lt;/p&gt;

&lt;p&gt;so project is simple&lt;/p&gt;

&lt;p&gt;like payilagam institute or any others they will provide the cource completed certificate after they completed the cource .they manualy edited the students details or they manualy written them all in pen.or they need to edit for all the students.&lt;br&gt;
i decide to do it automaticaly with a simple web application. &lt;br&gt;
here the users or the admin give the students details and choose themes for the certificates  &lt;/p&gt;

&lt;p&gt;in the next coming up blogs we will see the codes and how we can do this projects  &lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>productivity</category>
      <category>motivation</category>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>The Squirrel 🐿 Fell into the Well 😧</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Wed, 26 Nov 2025 19:08:27 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/the-squirrel-fell-into-the-well-3le8</link>
      <guid>https://dev.to/vigneshwaralingam/the-squirrel-fell-into-the-well-3le8</guid>
      <description>&lt;p&gt;Happy to type again.&lt;br&gt;
for the last 7 months i am in chennai there i dont remember to saw a &lt;strong&gt;squirrel(Anil)&lt;/strong&gt; 🐿. but in my home i can watch the squirrel fight and daily routines of squirrel.&lt;/p&gt;

&lt;p&gt;in my working hours i work in upstairs. when i want some break or need water i go down to play with pets and drink water.&lt;/p&gt;

&lt;p&gt;like this today morning i came for short break  i saw 2 squirrels are chasing each others in tree and they suddenly fall into the well(kinaru) ,without any doubt i go there and put the bucket into that well and try to pick up them one squirrel understand my help and try to catch the rope but another one is not understand.first one is catch the rope and get out of the well. and another one is try to get out of the well by running on the well's wall but it again and again it fell into the well i try many attempt help them but it go away from the rope and the bucket.&lt;/p&gt;

&lt;p&gt;after some time finally it understand and come near to the rope and get this rope and quickly pulling the rope and get out from the well..&lt;/p&gt;

&lt;p&gt;and they both run away from the well.&lt;/p&gt;

&lt;p&gt;here i want to tell one thing if u r studying then take some break on every 1 or 2 hours to relax yourself. if u r in institute or any group studies spend your break time with your friends or any one else...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;keep learning .. keep helping..&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Why its special?</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Mon, 17 Nov 2025 19:19:04 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/why-its-special-p5l</link>
      <guid>https://dev.to/vigneshwaralingam/why-its-special-p5l</guid>
      <description>&lt;p&gt;what curious about this pic??&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;oct 8th&lt;/strong&gt; i attended the  online rytways interview  at payilagam.In the interview they asked simple questions from springboot(i will tell in another blog) after the interview  i  going back to  home by bus,  i was thought like did i miss this chance again?&lt;/p&gt;

&lt;p&gt;i feel very much about it.on the tamabaram east bus stop i heared my phone ring but i did not that call ,i was loop into that mood so i did not take this call and see outside of bus, &lt;/p&gt;

&lt;p&gt;But outside a very romantic climate there(chill rainy evening with dark rainy sky) but i am in another world like when we watch the movie like this and we were in some situation like(in many emotional movie's climax , even a good scene or the comedy scene can make us cry )(sometime we feel very much emotional whether its happy or bad  ) the same mintality i have that time.  &lt;/p&gt;

&lt;p&gt;On the tambram bridge i saw some fireworks in sky at that movement , i dont know why i feel so much emotional  ,with this emotional , &lt;/p&gt;

&lt;p&gt;i promise my self &lt;strong&gt;"when I get my first job, the fireworks will defentely explored "&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;just few days later on &lt;strong&gt;oct 13&lt;/strong&gt;.. they arranged a next round for me on oct 13 and i attended the next rounds for rtyways(this one i  will tell in another blog), i cleared my rounds and i call muthu sir , after this call i go into the bus ,i rest my head in the window.. &lt;/p&gt;

&lt;p&gt;suddenly heared some sounds and i look at the sky .the exact thing i wished on oct 8 was just happening on oct 13. the fire works explored on the sky. this movement i cant forgot.i feel like this is real or movie.&lt;/p&gt;

&lt;p&gt;on next day i am going back to payilagam the similar climate welcomes me with a wounderfull memories after the interview on the same bridge , i enjoyed it with another mindset...&lt;/p&gt;

&lt;p&gt;some time when we see some good stills or the good climate our mind tell enjoy this situation or lets take some pics &lt;br&gt;
but i choose both for long memories..&lt;/p&gt;

&lt;p&gt;this one  pic in the cover ,i took on next day of this  interview  and  on the to payilagam ....&lt;/p&gt;

</description>
      <category>payilagam</category>
      <category>interview</category>
      <category>career</category>
      <category>motivation</category>
    </item>
    <item>
      <title>How much notes did you completed ,when you are trying to get your job?</title>
      <dc:creator>Vigneshwaralingam</dc:creator>
      <pubDate>Sun, 26 Oct 2025 14:11:57 +0000</pubDate>
      <link>https://dev.to/vigneshwaralingam/how-much-did-you-notes-and-learn-when-you-are-trying-to-get-your-job-4cpc</link>
      <guid>https://dev.to/vigneshwaralingam/how-much-did-you-notes-and-learn-when-you-are-trying-to-get-your-job-4cpc</guid>
      <description>&lt;p&gt;To get my first job, it take this much notes and learning to get it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ps5zk80x9rympnj7ze2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ps5zk80x9rympnj7ze2.jpg" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not only the notes but also some books,files,resumes also helped me to join my first job. &lt;br&gt;
i completed 9 notes  and halfly completed my  6 notes.&lt;br&gt;
comment your counts?.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
