I think the most important thing to remember with people who repeat mistakes is to consider their intentions. Are they trying to fix something? Trying to understand and just aren't quite there yet? Don't give up on someone who cares enough about you to genuinely try to come from your angle.
INFJ's have some beautiful insights about this... "People don't heal/learn/grow/ on your time table. Give them the room to learn at their pace." I know. I know. That's hard when you see someone you care about banging their head against a brick wall, but it doesn't necessarily mean they are nincompoops. It could mean they care about you enough to compromise and find a solution.
If someone hurts you, tell them. People have many boundaries. MANY. And ENTJ's (God love em!) tend to cross them on accident a lot by wanting to move forward NOW! Deep breaths... pull back some... look at it from a different perspective. Always look at the intention. And remember a warrior's lesson... when to retreat and regroup to win a battle.
I've seen so many of this type torture themselves with this. I just want to hug them. ::blink blink::