Dúvida ao utilizar @Column(unique=true)

Caros colegas,

tenho que fazer o parser de um documento XML e inserir as informações no MySQL.
Modelei as classes Java em um formato semelhante a estrutura do XML.

Este é o modelo do documento que contém as informações do XML

[code]package br.ufrj.cos.bri.model;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

@Entity
public class DocumentModel {
private long id;
private String paperNumber;
private String recordNumber;
private String medlineNumber;
private String title;
private String source;
private String abstractText;
private List authors;
private List majorSubtopic;
private List minorSubtopic;
private List references;
private List citations;

@Id @GeneratedValue
public long getId() {
	return id;
}
public void setId(long id) {
	this.id = id;
}
public String getPaperNumber() {
	return paperNumber;
}
public void setPaperNumber(String paperNumber) {
	this.paperNumber = paperNumber;
}
public String getRecordNumber() {
	return recordNumber;
}
public void setRecordNumber(String recordNumber) {
	this.recordNumber = recordNumber;
}
public String getMedlineNumber() {
	return medlineNumber;
}
public void setMedlineNumber(String medlineNumber) {
	this.medlineNumber = medlineNumber;
}
public String getTitle() {
	return title;
}
public void setTitle(String title) {
	this.title = title;
}
public String getSource() {
	return source;
}
public void setSource(String source) {
	this.source = source;
}
@Lob
public String getAbstractText() {
	return abstractText;
}
public void setAbstractText(String abstractText) {
	this.abstractText = abstractText;
}
@ManyToMany
public List<Author> getAuthors() {
	return authors;
}
public void setAuthors(List<Author> authors) {
	this.authors = authors;
}
@OneToMany
public List<Subtopic> getMajorSubtopic() {
	return majorSubtopic;
}
public void setMajorSubtopic(List<Subtopic> majorSubtopic) {
	this.majorSubtopic = majorSubtopic;
}
@OneToMany
public List<Subtopic> getMinorSubtopic() {
	return minorSubtopic;
}
public void setMinorSubtopic(List<Subtopic> minorSubtopic) {
	this.minorSubtopic = minorSubtopic;
}
@OneToMany
public List<Cite> getReferences() {
	return references;
}
public void setReferences(List<Cite> references) {
	this.references = references;
}
@OneToMany
public List<Cite> getCitations() {
	return citations;
}
public void setCitations(List<Cite> citations) {
	this.citations = citations;
}

}
[/code]

Estou com dúvidas em como realizar a persistência da classe Author. Como um autor pode aparecer em vários documentos, faz sentido referenciar o mesmo author nos documentos em que este consta como autor.
Sendo assim, coloquei a restrição na classe Author.

[code]package br.ufrj.cos.bri.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Author {
private long id;
private String name;

@Id @GeneratedValue
public long getId() {
	return id;
}
public void setId(long id) {
	this.id = id;
}

@Column(unique=true)
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}

}
[/code]

Quando encontro um objeto com o mesmo nome de um previamente persistido, é lançada uma exceção informando chave duplicada.
Daí surge a minha dúvida. Quando eu for persistir um Author que tenha sido persistido anteriormente, como posso fazer para que o novo objeto a ser inserido faça referência ao antigo e ao mesmo tempo continue mantendo as
referências de forma correta na classe Java.

Obrigado!

Resolvi o problema utilizando um Map onde a chave é o nome do autor e o objeto é a instância da classe Author.

Abraço!