因此,如果某些表缺少主键,那么innodb就会导致问题。在@ElementCollection上指定一个主键
因此,在Hibernate中,我正在寻找一个用于指定@ElementCollection表上的主键并使用Set作为下划线数据结构的键。
我找到了一个有地图主键的方法,但它有点奇怪,因为我不需要地图。
我还发现了一个与@Embeddable相关的答案,但我不需要那种复杂性。我在我的实体中使用Set或Set作为数据结构。
任何想法如何实现?
因此,如果某些表缺少主键,那么innodb就会导致问题。在@ElementCollection上指定一个主键
因此,在Hibernate中,我正在寻找一个用于指定@ElementCollection表上的主键并使用Set作为下划线数据结构的键。
我找到了一个有地图主键的方法,但它有点奇怪,因为我不需要地图。
我还发现了一个与@Embeddable相关的答案,但我不需要那种复杂性。我在我的实体中使用Set或Set作为数据结构。
任何想法如何实现?
如果您使用Set并使元素Column不为null,则hibernate将使用连接列和元素列创建主键。
好简单的解决方案。为我工作。 –
非null必须使用@Column(nullable = false)进行设置,并且不能使用@NotNull注释。 @Column(nullable = false)用于指示数据库模式细节。请参阅[@NotNull vs @Column(nullable = false)](https://stackoverflow.com/a/7439544/1997088)以获取更多详细信息 – Black
@ElementCollection
不能取主键,因为Embeddable
类型不能有标识符。你可以add an @OrderColumn
来优化生成SQL语句。
如果您需要一个主键,那么您应该将@ElementCollection
关联为@OneToMany
关联。
你有什么参考? – plcstpierre
我在答案中链接的文章是一个很好的起点。然后你必须手动生成模式来创建PK,因为Hibernate只支持实体上的PK。 –
糟糕。这不是性能问题,而是MySQL复制,所以我不认为@OrderColumn会救我。我真正的问题是:你有没有参考hibernate的限制? – plcstpierre
使用@ ManyTo *类似的关系:如果你有一个主键,那么你有一个新的实体。 –
仅仅为一组int创建一个新的实体是很烦人的。 – plcstpierre