我有一个具有两个多对多关系的模型。 Play 框架为我创建了关系表,但没有一个 id 可以为空,导致我无法让我的代码工作。
Play 框架返回
PersistenceException 发生:插入 Costumer_Item (customersWhoIgnored_id, ignoreItems_id) 值 (?, ?)
19:20:54,530 ERROR ~ Field 'customersWhoBought_id' doesn't have a default value
19:20:54,531 ERROR ~ Could not synchronize database state with session
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
代码是Item.java:
@Entity
public class Item extends Model {
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "ownedItems")
public List<Costumer> customersWhoBought;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "ignoredItems")
public List<Costumer> customersWhoIgnored;
}
客户.java:
@Entity
public class Customer extends Model {
@Column(nullable = true)
@ManyToMany(cascade = CascadeType.ALL)
public List<Item> ownedItems;
@Column(nullable = true)
@ManyToMany(cascade = CascadeType.ALL)
public List<Item> ignoredItems;
}
我如何让许多 @ManyToMany 关系起作用?
最佳答案
我认为两个关系都使用相同的连接表,默认名称为 Costumer_Item
,导致困惑。您需要手动指定不同的名称:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "CostumerToOwnedItems")
public List<Item> ownedItems;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "CostumerToIgnoredItems")
public List<Item> ignoredItems;
关于hibernate - 我如何让许多 @ManyToMany 关系起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4672901/