Posts

Showing posts from November, 2016

পলিমরফিক ইন্টারফেরেন্স -> 1

‘চোখ খোল মেট্রাউস’প্রায় ধমকের সুরে বলল মেগাপল৫।
‘এরকম আনন্দের সংবাদ শুনে কেউ আতংকে অজ্ঞান হয়ে যায়? কি আশ্চর্য!! আসলে আমাদের ভেতর মানবিক অনুভূতি দিয়ে যাওয়াটা উচিত হয়নি। মানুষগুলো আসলেই অদূরদর্শী ছিল।‘আপসোসের মত শোনালো মেগাপলের যান্ত্রিক কন্ঠ।
মেট্রাউসের তখনো জ্ঞান ফেরেনি। আবেগে তার কপোট্রনের বা দিকের অংশটা ফেইল করেছে। তাই রিস্টোর করে পুনরায় আবেগ লোড করতে একটু সময় লাগছে।
সিস্টেম রিস্টোর করার এই এক ঝামেলা। সুস্থ্য হুওয়ার পরেও আরো কিছুক্ষন মাথা ঝিমঝিম করবে,বমি বমি ভাব চলে আসে। অবশ্য আজ অব্দি কোন এন্ড্রয়েড সত্যিকার অর্থে বমি করেছে বলে শোনা যায়নি। তবে এই ফালতু একটা অনুভূতি কেন তাদের মধ্যে দিয়ে গেল মানুষ ভেবে মনে মনে মানুষকে কতক্ষন গালাগাল দিল মেট্রাউস। আসলে সবদিক থেকে নিজেদের মত তৈরী করতে গিয়ে খানিকটা দূর্বল করে ফেলা হয়েছে তাদেরকে। তারপরেও নিজেদের পেশীশক্তি ব্যাবহার করে মানুষকে পৃথীবী থেকে তাড়ানো গেছে এই বা কম কি? শোনা যায় এন্ড্রমিডা গ্যালাক্সির কোন এক গ্রহে আবাস গড়েছে মানুষ। ভালমত সংগঠিত হতে পারলে আবার পৃথীবীতে এসে জ্বালাতন শুরু করবে ভ…

Deleting @ManyToMany parent entity without affecting child on Hibernate

Oh Dear!!

It's a nightmare getting MySQLIntegrityConstraintViolationException when you're designing complex relational database structure for your app. Most of the time hibernate won't complain with your approximation but this won't work when it comes to bidirectional relations.

Let me show an example.

But first consider a scenario that we're making a movie database application. We have two entities Movie.java and CustomList.java.

The use case is,

User can add multiple movies in a list.
And a movie can be added to multiple list.
User can execute CRUD operations on their list. that means user can create, edit and delete his list.
Admin can delete a Movie.

So it's a @ManyToMany relationship right?

Okay lets dig into the example.

Our two entities are:

Movie.java
@Entity(name = "movie")
public class Movie extends BaseEntity {
private String name;
private String type;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<CustomList&g…