[Hibernate] - Associação ternária - Tabela de junção com atributos

Criei uma classe para representar a associação, uma vez que ela possui alguns atributos além das FK´s.
A estrutura esta completa e funcionando. A única divergência que encontrei foi do quando o Hibernate gera o DDL para criar a tabela de junção.
Possuo quatro atributos na tabela, sendo que dois correspondem as tabelas associadas, de fato, e outros dois são atributos.

Quando o Hibernate gera o DDL, esta colocando todos os quatro campos como PK da tabela, sendo que deveriam ser apenas os dois correspondentes as FK´s das tabelas associadas.

Como contorno essa situação?

UPDATE
De acordo com o exemplo no livro Hibernate In Action:

[code]
class Category {
int id;
// othres
}

class Item {
int id;
// others
}[/code]

A classe intermediária:

class CategorizedItem {
  int category_id; // tem que fazer parte da PK
  int item_id; // tem que fazer parte da PK
  String added_by_user; // não pode fazer parte da PK
  Date added_on; // não pode fazer parte da PK
}

A forma de mapeamento: Tabela de junção para uma coleção de componentes.

A classe CategorizedItem detalhada:

@Embeddable
class CategorizedItem {

  @org.hibernate.annotations.Parent
  private Category category;

  @ManyToOne
  @JoinColumn(name="ITEM_ID", nullable=false, updatable=false)
  private Item item;

  @ManyToOne
  @JoinColumn(name="USER_ID", nullable=false, updatable=false)
  private User user;

  @Temporal(TemporalType.TIMESTAMP)
  @Column(name="ADDED_ON", nullable=false, updatable=false)
  private Date dateAdded;

   // ... 
  // getter´s and setter´s; equals e hashCode

}

E na classe Category, foi adicionado a coleção:

  @org.hibernate.annotations.CollectionOfElements
  @JoinTable(name="CATEGORY_ITEM", joinColumns=@JoinColumn(name="CATEGORY_ID"))
  private Set<CategorizedItem> categorizedItems = new HashSet<CategorizedItem>();

At.