I've encountered a problem that may be a hibernate collection bug. Using the code listed below, I'm creating collection table that has two columns: TERRITORY_ID and characters_CHARACTER_ID. When hibernate creates the table, it creates the following indexes:
1. An compound unique index on TERRITORY_ID and characters_CHARACTER_ID, which is expected.
2. A non-unique on both TERRITORY_ID and characters_CHARACTER_ID, which is expected.
3. A unique index on characters_CHARACTER_ID, which is the problem.
Why is the unique index on characters_CHARACTER_ID being created? If I manually drop the index, my code works fine. Otherwise, I get a unique constraint violation when I try to insert more than one of the same character id into the table. Not the desired behavior. I'd rather not put SQL in my code to delete the index. Has anyone else encountered this problem?
Code:
public class Territory implements Serializable {
private static final long serialVersionUID = -8906914598601073008L;
@Id
@Column(name = "TERRITORY_ID", length = 50)
private String territoryId;
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name="TERRITORY_CHARACTER", joinColumns=@JoinColumn(name="TERRITORY_ID"))
@Column(name="CHARACTER_ID")
private Set<Character> characters;
...
}
public class Character implements Serializable {
private static final long serialVersionUID = 845127746329423630L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "CHARACTER_ID")
private Long characterId;
...
}