Hibernate 玩JPA@ManyToMany bug

Hibernate 玩JPA@ManyToMany bug,hibernate,jpa,playframework,Hibernate,Jpa,Playframework,我有三个实体:用户、团队和团队邀请。每个用户都有一个团队。每个用户都可以通过创建TeamInvite邀请其他用户加入他们的团队。当接受TeamInvite时,每个用户的*团队*都会更新。团队邀请不会影响用户,只影响他们的团队 我从Yabe演示中复制了我的注释结构(帖子有一组标记)。有人知道我做错了什么吗?我猜团队的反面。团队关系也被命名为User.Team。如果是这样,则联接表中的列名称之间存在冲突,因为它们的默认形式是propertyName+“\u id” 因此,您需要更改其中一个属性名,或

我有三个实体:用户、团队和团队邀请。每个用户都有一个团队。每个用户都可以通过创建TeamInvite邀请其他用户加入他们的团队。当接受TeamInvite时,每个用户的*团队*都会更新。团队邀请不会影响用户,只影响他们的团队


我从Yabe演示中复制了我的注释结构(帖子有一组标记)。有人知道我做错了什么吗?

我猜
团队的反面。团队
关系也被命名为
User.Team
。如果是这样,则联接表中的列名称之间存在冲突,因为它们的默认形式是
propertyName+“\u id”


因此,您需要更改其中一个属性名,或者用替换默认列名。

我猜
Team.Team
关系的反面也被命名为
User.Team
。如果是这样,则联接表中的列名称之间存在冲突,因为它们的默认形式是
propertyName+“\u id”


因此,您需要更改其中一个属性名,或者使用替换默认列名。

将Team.Team更改为Team.members(这可能是一个更好的名称)实际上解决了这个问题。谢谢将Team.Team更改为Team.members(这可能是一个更好的名称)实际上解决了这个问题。谢谢
@Entity
public class Team extends Model {
    @OneToOne
    public User user;

    @ManyToMany(cascade=CascadeType.ALL)   //I've also tried CascadeType.PERSIST
    public List<User> team = new ArrayList<User>();
}

@Entity
public class TeamInvite extends Model {
    @ManyToOne
    public User inviter;

    @ManyToOne
    public User invitee;

    public void fulfill() {
        Team team = Team.forUser(inviter);
        team.team.add(invitee);
        team.save();    //error gets thrown here

        team = Team.forUser(invitee);
        team.team.add(inviter);
        team.save();

        delete();
    }
}
PersistenceException occured : org.hibernate.exception.SQLGrammarException: could not insert collection: [models.Team.team#2]

play.exceptions.JavaExecutionException: org.hibernate.exception.SQLGrammarException: could not insert collection: [models.Team.team#2]
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:231)
    at Invocation.HTTP Request(Play!)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not insert collection: [models.Team.team#2]
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
    ...
Caused by: org.hibernate.exception.SQLGrammarException: could not insert collection: [models.Team.team#2]
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1243)
    at org.hibernate.action.CollectionUpdateAction.execute(CollectionUpdateAction.java:81)
    ...
Caused by: org.h2.jdbc.JdbcSQLException: Duplicate column name "TEAM_ID"; SQL statement:
insert into Team_dp_user (Team_id, team_id) values (?, ?) [42121-149]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
    at org.h2.message.DbException.get(DbException.java:167)
    ...