Le @Embeddable pour les relations @ManyToMany et les colonnes supplémentaires fonctionne-t-il avec String ? Je n'utilise pas @Generated Value for @Id car mon Entity ApplikationUser
@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<>();
par la logique métier a toujours un Id
Voici mon code:
@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<>();
@Embeddable
public class ApplikationUserPopupMessageId implements Serializable {
@Column(name = "applikation_user_id")
private String applikationUserId;
@Column(name = "popup_message_id")
private Long popupMessageId;
@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;
@Id @Column(length = 128) private String applikationUserId;
EDIT - 23.11.2020 En ce qui concerne le manque d'intérêt, cela nous semble possible @Embeddable with String ?
3 Réponses :
Mettez simplement des getters et des setters pour les propriétés correspondantes dans votre @Embeddable .
Merci. Mais il y a des getters et des setters pour tout ...
Avez-vous revérifié la visibilité et la dénomination?
Oui. Ils sont générés automatiquement par IDE
Cela vous aide-t-il si vous annotez votre classe d'entité avec le niveau d'accès au champ
@Entity(access = AccessType.FIELD)
Non ... Mêmes erreurs ...
Instanciez applikationUserPopupMessageId:
@Entity
public class ApplikationUserPopupMessage {
@EmbeddedId
private ApplikationUserPopupMessageId applikationUserPopupMessageId = new ApplikationUserPopupMessageId();
}
C'est un problème connu