Skip to content

Many to many relation mapping #216

Description

@xjarkrof

It seems there is an issue mapping many to many relation like:

@Entity
public class Item {
....
  @ManyToMany(targetEntity = Category.class, fetch = FetchType.LAZY, cascade = {CascadeType.REFRESH})
  @JoinTable(name = "itemCategory",
        joinColumns = {@JoinColumn(name = "itemId", referencedColumnName = "id")},
        inverseJoinColumns = {@JoinColumn(name = "categoryId", referencedColumnName = "id")})
    private List<Category> categories = new ArrayList<Category>();
....
}

and

@Entity
public class Category {
...
    @ManyToMany(targetEntity = Item.class, fetch = FetchType.LAZY, cascade = {CascadeType.REFRESH})
    @JoinTable(name = "itemCategory",
        joinColumns = {@JoinColumn(name = "categoryId", referencedColumnName = "id")},
        inverseJoinColumns = {@JoinColumn(name = "itemId", referencedColumnName = "id")})
    private List<Item> items = new ArrayList<Item>();
...
}

What I believe is completely legal usage case, is causing something like this:

...
Caused by: org.batoo.jpa.parser.MappingException: Duplicate table names JoinTable[itemCategory class entities.Item.categories], JoinTable[itemCategory class entities.Category.items]
    at org.batoo.jpa.core.impl.model.MetamodelImpl.checkTables(MetamodelImpl.java:379)
    at org.batoo.jpa.core.impl.manager.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:157)
    at org.batoo.jpa.core.impl.manager.JtaEntityManagerFactoryImpl.<init>(JtaEntityManagerFactoryImpl.java:80)
    at org.batoo.jpa.core.BatooPersistenceProvider.createContainerEntityManagerFactory(BatooPersistenceProvider.java:72)
    at org.batoo.jpa.core.BatooPersistenceProvider.createContainerEntityManagerFactory(BatooPersistenceProvider.java:44)
...

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions