答案 0 :(得分:1)
通常,在postgres上使用GenerationType.IDENTITY创建表时,Hibernate会设置id列以及数据库序列来管理此id。
按照惯例,序列名称将为“ 表名 _id_seq”。例如,对于表class Menu extends React.Component {
state = {
collapsed: false,
categories: []
};
componentDidMount() {
axios
.get("https://www.ifixit.com/api/2.0/categories")
.then(response => this.setState({ categories: response.data}));
}
render() {
const { categories } = this.state;
return (
<div>
{Object.keys(categories).map((item, i) => (
<li key={i}>
<span>{categories[item]}</span>
</li>
))}
</div>
);
}
}
export default Menu;
,将有一个相应的序列ad_group_action
。您可以连接到数据库以再次检查创建的实际序列名称。
序列从1开始,每次Hibernate插入一行时递增。
但是,如果存在预先存在的行-或者如果将具有现有ID的行“手动”插入到表中,则这些行可能与序列冲突。
一种解决方案是简单地使用以下方法将序列(从pgAdmin或另一个数据库客户端)重置为从更高的数字开始(例如100):
ad_group_action_id_seq
现在,Hibernate将不会与现有行冲突(假设其最大id为<100)。
或者,当手动插入行时,省略id列,然后让postgres自动设置它们。这样,表格和序列将始终保持同步。
答案 1 :(得分:0)
可以分享您的表定义吗?
CREATE TABLE ad_group_action...