o livro Pro JPA 2 (Keith e Schincariol, p.101) diz que @OneToMany é unidirecional quando o a classe owner não define o atributo mappedBy, e a classe alvo não tem a notação @ManyToOne de volta. Seguindo o exemplo do livro, criei as entiddes Employee e Phone, em que um Employee pode ter varios Phones:
@Entity
@Table(name="employee")
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID_EMP")
private Integer id;
@Column(name="DES_NOME")
private String name;
@Column(name="VAL_SALARY")
private Double salary;
@OneToMany //unidirectional one-to-many
@JoinTable(name="employee_phone",
joinColumns=@JoinColumn(name="ID_EMP"),
inverseJoinColumns=@JoinColumn(name="ID_PHONE"))
private Collection<Phone> phones;
...
}
@Entity
@Table(name="phone")
public class Phone implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="ID_PHONE")
private Integer id;
@Column(name="DES_NUMBER")
private String number;
...
}
a joinTable gerada no banco não possui chave primaria, e é formada pelos campos ID_PHONE e ID_EMP. O problema é que a coluna ID_PHONE está sendo gerada com a constraint unique, o que impede Employees diferentes de terem o mesmo Phone.
No exemplo do livro, essa constraint não aparece e a chave primaria é composta.
Alguém sabe como gerar a join table corretamente, sem essa constraint e com a chave primária composta pelos dois campos ?? 
obrigado