我有一个如下结构的表:
NUMBER RECORD_ID - PK
STRING NAME
STRING SOME_OTHER_BS
NUMBER ID - the person id i need to group the records by
我在我的Hibernate实体中映射了这样的字段:
long id; // RECORD_ID
String name; // NAME
String someOtherBS; // SOME_THER_BS
long personId; // ID
现在的问题是我需要在实体中拥有一组具有相同 personId 的元素。我试图这样做:
@ManyToOne(fetch= FetchType.LAZY, targetEntity = MyEntity.class)
@JoinColumns( {
@JoinColumn(name="`ID`", referencedColumnName = "`ID`")
} )
private Set<MyEntity> otherEntities;
但这给了我以下错误:
org.hibernate.MappingException: 映射中的重复列 for entity: com.sflpro.dto.MyEntity column: ID(应该使用 insert=“false” update=“false”) at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:681) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:703) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] atorg.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:725) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:478) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.mapping.RootClass.validate(RootClass.java:270) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.cfg.Configuration.validate(Configuration.java:1294) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1736) ~[hibernate-core-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:94) ~[hibernate-entitymanager-4.1.5.Final.jar:4.1.5.Final] at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) ~[hibernate-entitymanager-4.1.5.Final.jar:4.1.5.Final] ...省略了 74 个常见帧
那么我如何才能做到这一点呢?
附言
这是一个遗留的数据库,改变它的设计是一个官僚主义的麻烦,所以我宁愿避免这一点。
更改以下内容:
@JoinColumn(name="ID", referencedColumnName="RECORD_ID")
请记住,您的主键是< code>RECORD_ID,您的外键是< code>ID
问题内容: 我试图将我的SQL数据库中表的主键从现有键更改为复合键,其中不包括现有列。由于出现以下错误消息,因此以下代码无法正常工作: 删除主键: PRIMARY附近的语法不正确。预期为COLUMN,CONSTRAINT,ID或QUOTED_ID 添加主键: PRIMARY附近的语法不正确。 期望ID T-SQL代码: 编辑 我可以通过使用以下两个查询语句来完成此操作 我没有要求SQL“ DROP
在模型中,我有一个主键为True的OnetoOne字段。现在我想将其更改为ForeignKey,但无法更改,因为没有“id”。 由此: user=models.OneToOneField(用户,主键=True,on\u delete=models.CASCADE) 为此: user1=models.ForeignKey(用户,相关的\u name='inventory',在\u delete=mo
问题内容: 因此,如果某些表缺少主键,则innodb的行为可能会导致问题。 因此,对于Hibernate,我正在寻找一个键来指定@ElementCollection表上的主键,并使用Set作为基础数据结构。 我找到了一种在地图上具有主键的方法,但这有点奇怪,因为我不需要地图。 我还找到了与@Embeddable相关的答案,但是我不需要那种复杂性。我在实体中使用Set或Set作为数据结构。 知道如何
我在将外键映射为主键时遇到问题。 我的桌子是: 下面是我定义为实体的类: 客户爪哇: 游戏。爪哇: 票爪哇: 票d.java: 到目前为止,我已经尝试了所有的建议,但没有一个有用。另外,我需要这个PK由外键组成,所以我真的需要帮助解决,我应该如何正确地映射它。
所以我有一个表,它用一个昵称作为外键,用一个id作为主键: 到目前为止,一切都很好。然而,每当我试图从发布中获取主键时,它告诉我:“没有唯一的约束来匹配引用表“信息”的给定键。 但是,如果我将表中的信息信息ID更改为唯一,错误就会消失。这是正确的做事方式吗? 提前感谢大家!
问题内容: 兼职勉强的DBA在这里。我想将现有的主键索引从群集更改为非群集。语法在逃避我。 这就是现在的脚本编写方式。 我在在线文档中没有看到ALTER CONSTRAINT语句。 问题答案: 删除聚集索引,然后将主键重新创建为非聚集键: