2016-04-25 7 views
0


Ich habe kürzlich an Hibernate und MVC gearbeitet. Ich habe verschiedene Tutorial und Versuch folgte eine Many-to-many-Beziehung zu tun, aber ich halte die folgende Fehlermeldung erhalten:Spring + Hibernate Konnte den Typ nicht bestimmen Set

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

In meinem Servlet-context.xml, ich habe folgendes:

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

In meinem Group.class ich habe folgendes:

@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", [email protected](name="group_id"), 
     [email protected](name="objectId")) 
    public Set<Account> getAccountList() { 
     return accountList; 
    } 
} 

AKTUALISIERT
Account.clas s

@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 

Group.class

@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", [email protected](name="group_id"), 
      [email protected](name="objectId")) 
     private Set<Account> accountList = new HashSet<Account>(); 

    } 

Jetzt bekomme ich folgende Fehlermeldung jedes Mal, wenn ich versuche, von der DAO Implementierung zu speichern:

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' 

Ich glaube, dass das Set verursacht das Problem, aber verschiedene Tutorials waren in der Lage, es zu erreichen, gibt es einige zusätzliche Prozedur, die ich tun muss.

Antwort

2

Da Sie @Id Annotation im Feld angegeben haben, müssen Sie die anderen Annotationen auf Feldebene und nicht auf Getter definieren.

@ManyToMany(cascade=CascadeType.ALL) 
@JoinTable(name="objectId", [email protected](name="group_id"), 
    [email protected](name="objectId")) 
private Set<Account> accountList = new HashSet<Account>(); 

würde Ihr Problem lösen.

Vergessen Sie nicht, das gleiche in der Account Klasse zu folgen.

+0

Hallo, ich erhalte eine neue Mapping-Ausnahme für den Fremdschlüssel. Habe ich meine Anmerkungen für die Feldebene auf der Account.class falsch gemacht? Siehe den AKTUALISIERTEN Abschnitt – user288231

+0

Können Sie den relevanten Code Ihrer DAO-Implementierung teilen? –

+0

Ich habe das Problem behoben. Ich musste ein @ JsonIgnore machen, es stürzte ab, weil es in eine Endlosschleife ging. Vielen Dank! – user288231

1

Könnte Ihre Account-Klassendefinition für @ManyToMany angegeben werden?

+0

Ich habe meine Account-Klasse @ManyToMany-Beziehung platziert. Ich kann immer noch nicht verstehen, warum ich einen Mapping-Fehler bekomme. – user288231

Verwandte Themen