org.hibernate.PropertyAccessException: 无法通过反射为 String 设置字段值 [STRING] 值

Wul*_*ulf 7 java many-to-many jpa

@Embeddablefor@ManyToMany关系和附加列是否与String? 我不使用@Generated Value for @Id 因为我的实体ApplikationUser

@Id
@Column(length = 128)
private String applikationUserId;
Run Code Online (Sandbox Code Playgroud)

按业务逻辑总是有一个 Id

这是我的代码:

@EmbeddedId
private ApplikationUserPopupMessageId applikationUserPopupMessageId;

@ManyToOne(fetch = FetchType.EAGER)
@MapsId("applikationUserId")
private ApplikationUser applikationUser;

@ManyToOne(fetch = FetchType.EAGER)
@MapsId("popupMessageId")
private PopupMessage popupMessage;

@Column(name = "gelesen")
private boolean gelesen = false;
Run Code Online (Sandbox Code Playgroud)

@Embeddable
public class ApplikationUserPopupMessageId implements Serializable {

    @Column(name = "applikation_user_id")
    private String applikationUserId;

    @Column(name = "popup_message_id")
    private Long popupMessageId;
Run Code Online (Sandbox Code Playgroud)

@Entity
@Table
public class PopupMessage {

    @Id
    @GeneratedValue
    @Column(length = 128)
    private Long messageId;

    private String title;
    private String message;

    @OneToMany(
            mappedBy = "applikationUser",
            cascade = CascadeType.ALL,
            orphanRemoval = true
    )
    private List<ApplikationUserPopupMessage> applikationUserPopupMessages = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

@Entity
public class ApplikationUser implements UserDetails {

    /**
     *
     */
    private static final long serialVersionUID = -5517804528054972083L;

    @Id
    @Column(length = 128)
    private String applikationUserId;

    @Column
    private String password;

    @ManyToOne
    @JoinColumn(name = "idRole")
    private Role role;

    private boolean enabled = true;

    @OneToMany(
            mappedBy = "popupMessage",
            cascade = CascadeType.ALL,
            orphanRemoval = true
    )
    private List<ApplikationUserPopupMessage> applikationUserPopupMessages = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

编辑- 2020年11月23日 关于缺乏兴趣,它似乎是可能给我们@EmbeddableString

Qwe*_*ken 4

实例化applikationUserPopupMessageId:

@Entity
public class ApplikationUserPopupMessage {
  @EmbeddedId
  private ApplikationUserPopupMessageId applikationUserPopupMessageId = new ApplikationUserPopupMessageId();
}
Run Code Online (Sandbox Code Playgroud)

这是已知问题