Ben*_*Ben 4 java hibernate composite-primary-key pie-chart
如何使用 HQL(Hibernate 查询语言)在侧表中声明复合主键?以前我在我的班级中声明了一个可连接的,一切正常,它创建了两列的复合主键。这是我使用的代码:
之前(工作)
@Id
@SequenceGenerator(name="someSequence", sequenceName="SEQ_APP", allocationSize =1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="appSequence")
@Column(name="id")
private int setting_id;
@OneToOne
private User user;
@ManyToMany
@JoinTable(
name="tbl_settings_objectproxy",
joinColumns = @JoinColumn(name = "id"),
inverseJoinColumns = @JoinColumn( name = "objectproxy_id")
)
private Set<SomeObject> objectproxy;
Run Code Online (Sandbox Code Playgroud)
现在我仔细检查了所有内容,将 Set 更改为 List 并添加了另一个边桌。现在 hibernate 创建了两个侧表,但它没有声明任何主键......有谁知道如何解决这个问题?这是我的新代码:
AFTER(它不再创建复合主键,它甚至不声明任何主键)
@Id
@SequenceGenerator(name="someSequence", sequenceName="SEQ_APP", allocationSize =1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="appSequence")
@Column(name="id")
private int setting_id;
@OneToOne
private User user;
@ManyToMany
@JoinTable(
name="tbl_settings_objectproxy",
joinColumns = @JoinColumn(name = "id"),
inverseJoinColumns = @JoinColumn( name = "objectproxy_id")
)
private List<SomeObject> objectProxyForSomething;
Run Code Online (Sandbox Code Playgroud)
答案/解决方案:
在这种情况下,将List<> 更改为 Set<>将发挥所有作用。
您可以 使用 HQL 手动创建表。
@ManyToMany
@JoinTable(
name="tbl_settings_objectproxy_for_something",
joinColumns = @JoinColumn(name = "id", columnDefinition = "int primary key"),
inverseJoinColumns = @JoinColumn( name = "objectproxy_id")
uniqueConstraints = {@UniqueConstraint(columnNames={"id", "objectproxy_id"})}
)
private List<SomeObject> SomeObjectProxy;
Run Code Online (Sandbox Code Playgroud)
投票支持 JB Nizet 的评论,因为这些是他的解决方案,但他在评论中给出了它们而不是答案。
| 归档时间: |
|
| 查看次数: |
8654 次 |
| 最近记录: |