【问题标题】:Failed to convert property value of type 'java.lang.Long' to required type无法将类型“java.lang.Long”的属性值转换为所需类型
【发布时间】:2021-07-08 19:04:01
【问题描述】:

我有两个具有多对多关系的实体

Card

@Entity
@Data
@Table(name = "card")
public class Card {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false, name = "name")
    private String name;

    @Column(nullable = false, name = "type")
    private String type;

}

Deck

@Entity
@Data
@Table(name = "deck")
public class Deck {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne
    private User owner;

    @Column(nullable = false, name = "name")
    private String name;

    @Column(nullable = false, name = "access_level")
    private String accessLevel;

    @OneToMany(mappedBy = "deck", cascade = CascadeType.ALL)
    List<CardDeckIntersection> cardDeckIntersections;

}

因此我用复合主键创建了连接表:

@Data
@Entity
@Table(name = "card_deck_intersection")
@IdClass(CardDeckIntersectionId.class)
public class CardDeckIntersection {

    @Id
    @ManyToOne
    private Card card;

    @Id
    @ManyToOne
    private Deck deck;

}

和复合键类

@Data
public class CardDeckIntersectionId implements Serializable {
    private Card card;
    private Deck deck;
}

每次我尝试保存 CardDeckIntersection 元素时,我都会收到此异常:

org.springframework.beans.ConversionNotSupportedException:无法将类型“java.lang.Long”的属性值转换为属性“card”所需的类型“Card”;嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.Long”的值转换为属性“card”所需的类型“Card”:找不到匹配的编辑器或转换策略

【问题讨论】:

标签: java spring jpa


【解决方案1】:

您可以尝试使用这样的多对多关系。

将此添加到您的卡片类中。

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
    @JoinTable(name = "card_deck",
            joinColumns = {@JoinColumn(name = "card_id")},
            inverseJoinColumns = {@JoinColumn(name = "deck_id")})
    private Set<Deck> deck = new HashSet<>();

将此添加到您的套牌课程中。

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "deck")
    private Set<Card> card = new HashSet<>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2017-02-23
    • 2017-05-12
    • 2018-08-21
    • 2017-04-21
    • 2021-01-23
    • 2018-10-13
    相关资源
    最近更新 更多