gpt4 book ai didi

java - Spring + Hibernate 无法确定类型 Set

转载 作者:行者123 更新时间:2023-12-01 21:37:09 25 4
gpt4 key购买 nike


我最近一直在研究 Hibernate 和 MVC。我遵循了各种教程并尝试建立多对多关系,但我不断收到以下错误消息:

Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: Group, for column

在我的 servlet-context.xml 中,我有以下内容:

<beans:list>
<beans:value>com.model.Account</beans:value>
<beans:value>com.model.Group</beans:value>
</beans:list>

在我的 Group.class 中,我有以下内容:

@Entity
@Table(name="Group")
public class Group {
@Id
@Column(name="group_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

private String objectId;
private String groupName;
private Set<Account> accountList = new HashSet<Account>();
// ... Getters and setters

@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="objectId", joinColumns=@JoinColumn(name="group_id"),
inverseJoinColumns=@JoinColumn(name="objectId"))
public Set<Account> getAccountList() {
return accountList;
}
}

已更新
账户.class

@Entity
@Table(name="Account")
public class Account {

@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@Id
private String objectId;

@ManyToMany(cascade=CascadeType.ALL, mappedBy="accountList")
private Set<Group> groupList = new HashSet<Group>();
//...Getters and Setters

组.类

@Entity
@Table(name="Group")
public class Group {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

private String objectId;
private String groupName;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="objectId", joinColumns=@JoinColumn(name="group_id"),
inverseJoinColumns=@JoinColumn(name="objectId"))
private Set<Account> accountList = new HashSet<Account>();

}

现在,每次我尝试从 DAO 实现进行保存时,都会收到以下错误:

Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: Duplicate entry '1' for key 'PRIMARY'; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'

我确实相信 Set 导致了这个问题,但是各种教程都能够完成它,我是否需要做一些额外的过程。

最佳答案

由于您在字段中给出了 @Id 注释,因此您必须在字段级别而不是 getter 处定义其他注释。

@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name="objectId", joinColumns=@JoinColumn(name="group_id"),
inverseJoinColumns=@JoinColumn(name="objectId"))
private Set<Account> accountList = new HashSet<Account>();

可以解决您的问题。

不要忘记在 Account 类中遵循相同的操作。

关于java - Spring + Hibernate 无法确定类型 Set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36842406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com