我需要将DTO保存在链接到实体的数据库表中
我需要在数据库中保存用户的ID和应用程序ID,以跟踪更改。我已经尝试了模型模型,但它不起作用,当我尝试将DTO数据保存在db中时,我有一个错误
:
@Entity
@Table(name = "logfileapp")
public class LogFileApp implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idLogApp;
@Column(name = "data")
private LocalDateTime data;
@Column(name = "nodoconsole")
private Integer nodoConsole;
@Column(name = "launchingmeetingdatagatheringstarting")
private Time launchingMeetingDataGatheringStarting;
@Column(name = "avganalysistime")
private BigDecimal avgAnalysisTime;
@Column(name = "automationenablingdate")
private Date automationEnablingDate;
@Column(name = "done")
private Boolean done;
@Column(name="idpreupdate")
private Integer idPreUpdate;
@Column
private String nome_App, apmCode, insertedInCastProgram, stakeholderEngagement,
stakeholderBrief, onBoardingKitDelivery, primaRestitution, ownerOnboarding, ownerAFP,
gdsUnit, tecnologia, serverManager,
soloCMS, macchina, noteOnboarding, fase, afpStatus, pubblicatoDashboard, noteAppOwner,
jiraautomationActivation,
repoAvailability, automationStatus, automationNotes, greenItIndex,
onboardingKitClosing, sourceCodeFinalDelivery,
linkConfluence, businessCriticality, devMethodology, provider;
@ManyToOne(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
@JoinColumn(name = "FK_idUtente")
private Utente utente;
@ManyToOne(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
@JoinColumn(name = "FK_idApp")
private Applicazione applicazione;
我的DTO
public class LogFileAppDTO {
private Integer idLogApp;
private LocalDateTime data;
private Integer nodoConsole;
private Time launchingMeetingDataGatheringStarting;
private BigDecimal avgAnalysisTime;
private Date automationEnablingDate;
private Boolean done;
private Integer idPreUpdate;
private String nome_App, apmCode, insertedInCastProgram, stakeholderEngagement, stakeholderBrief,
onBoardingKitDelivery, primaRestitution, ownerOnboarding, ownerAFP, gdsUnit, tecnologia, serverManager,
soloCMS, macchina, noteOnboarding, fase, afpStatus, pubblicatoDashboard, noteAppOwner,
jiraautomationActivation, repoAvailability, automationStatus, automationNotes, greenItIndex,
onboardingKitClosing, sourceCodeFinalDelivery, linkConfluence, businessCriticality, devMethodology,
provider;
private Integer idUtente;
private Integer idApplicazione;
public LogFileAppDTO() {
}
public LogFileAppDTO(LogFileApp l) {
super();
idLogApp = l.getIdLogApp();
data = l.getData();
nodoConsole = l.getNodoConsole();
launchingMeetingDataGatheringStarting = l.getLaunchingMeetingDataGatheringStarting();
avgAnalysisTime = l.getAvgAnalysisTime();
automationEnablingDate = l.getAutomationEnablingDate();
done = l.getDone();
idPreUpdate = l.getIdPreUpdate();
nome_App = l.getNome_App();
apmCode = l.getApmCode();
insertedInCastProgram = l.getInsertedInCastProgram();
stakeholderEngagement = l.getStakeholderEngagement();
stakeholderBrief = l.getStakeholderBrief();
onBoardingKitDelivery = l.getOnBoardingKitDelivery();
primaRestitution = l.getPrimaRestitution();
ownerOnboarding = l.getOwnerOnboarding();
ownerAFP = l.getOwnerAFP();
gdsUnit = l.getGdsUnit();
tecnologia = l.getTecnologia();
serverManager = l.getServerManager();
soloCMS = l.getSoloCMS();
macchina = l.getMacchina();
noteOnboarding = l.getNoteOnboarding();
fase = l.getFase();
afpStatus = l.getAfpStatus();
pubblicatoDashboard = l.getPubblicatoDashboard();
noteAppOwner = l.getNoteAppOwner();
jiraautomationActivation = l.getJiraautomationActivation();
repoAvailability = l.getRepoAvailability();
automationStatus = l.getAutomationStatus();
automationNotes = l.getAutomationNotes();
greenItIndex = l.getGreenItIndex();
onboardingKitClosing = l.getOnboardingKitClosing();
sourceCodeFinalDelivery = l.getSourceCodeFinalDelivery();
linkConfluence = l.getLinkConfluence();
businessCriticality = l.getBusinessCriticality();
devMethodology = l.getDevMethodology();
provider = l.getProvider();
idUtente = l.getUtente().getIdUtente();
idApplicazione = l.getApplicazione().getIdApplicazione();
}
有三个实体,在修改其中一个实体时,我需要修改后实体的DTO ID和修饰符用户的ID。但是我无法将其放入数据库中,因为我的实体想要对象在DTO想要ID时。
I need to save the id of User and the id of Application in the database to keep track of the changes. I've tried the ModelMapper but it doesn't work and when i try to save the DTO data in the DB I've this error: java.lang.IllegalArgumentException: Unknown entity: it.progettogestionale.dto.generic.LogFileAppDTO
My Entity
@Entity
@Table(name = "logfileapp")
public class LogFileApp implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idLogApp;
@Column(name = "data")
private LocalDateTime data;
@Column(name = "nodoconsole")
private Integer nodoConsole;
@Column(name = "launchingmeetingdatagatheringstarting")
private Time launchingMeetingDataGatheringStarting;
@Column(name = "avganalysistime")
private BigDecimal avgAnalysisTime;
@Column(name = "automationenablingdate")
private Date automationEnablingDate;
@Column(name = "done")
private Boolean done;
@Column(name="idpreupdate")
private Integer idPreUpdate;
@Column
private String nome_App, apmCode, insertedInCastProgram, stakeholderEngagement,
stakeholderBrief, onBoardingKitDelivery, primaRestitution, ownerOnboarding, ownerAFP,
gdsUnit, tecnologia, serverManager,
soloCMS, macchina, noteOnboarding, fase, afpStatus, pubblicatoDashboard, noteAppOwner,
jiraautomationActivation,
repoAvailability, automationStatus, automationNotes, greenItIndex,
onboardingKitClosing, sourceCodeFinalDelivery,
linkConfluence, businessCriticality, devMethodology, provider;
@ManyToOne(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
@JoinColumn(name = "FK_idUtente")
private Utente utente;
@ManyToOne(cascade = CascadeType.ALL , fetch = FetchType.LAZY)
@JoinColumn(name = "FK_idApp")
private Applicazione applicazione;
My DTO
public class LogFileAppDTO {
private Integer idLogApp;
private LocalDateTime data;
private Integer nodoConsole;
private Time launchingMeetingDataGatheringStarting;
private BigDecimal avgAnalysisTime;
private Date automationEnablingDate;
private Boolean done;
private Integer idPreUpdate;
private String nome_App, apmCode, insertedInCastProgram, stakeholderEngagement, stakeholderBrief,
onBoardingKitDelivery, primaRestitution, ownerOnboarding, ownerAFP, gdsUnit, tecnologia, serverManager,
soloCMS, macchina, noteOnboarding, fase, afpStatus, pubblicatoDashboard, noteAppOwner,
jiraautomationActivation, repoAvailability, automationStatus, automationNotes, greenItIndex,
onboardingKitClosing, sourceCodeFinalDelivery, linkConfluence, businessCriticality, devMethodology,
provider;
private Integer idUtente;
private Integer idApplicazione;
public LogFileAppDTO() {
}
public LogFileAppDTO(LogFileApp l) {
super();
idLogApp = l.getIdLogApp();
data = l.getData();
nodoConsole = l.getNodoConsole();
launchingMeetingDataGatheringStarting = l.getLaunchingMeetingDataGatheringStarting();
avgAnalysisTime = l.getAvgAnalysisTime();
automationEnablingDate = l.getAutomationEnablingDate();
done = l.getDone();
idPreUpdate = l.getIdPreUpdate();
nome_App = l.getNome_App();
apmCode = l.getApmCode();
insertedInCastProgram = l.getInsertedInCastProgram();
stakeholderEngagement = l.getStakeholderEngagement();
stakeholderBrief = l.getStakeholderBrief();
onBoardingKitDelivery = l.getOnBoardingKitDelivery();
primaRestitution = l.getPrimaRestitution();
ownerOnboarding = l.getOwnerOnboarding();
ownerAFP = l.getOwnerAFP();
gdsUnit = l.getGdsUnit();
tecnologia = l.getTecnologia();
serverManager = l.getServerManager();
soloCMS = l.getSoloCMS();
macchina = l.getMacchina();
noteOnboarding = l.getNoteOnboarding();
fase = l.getFase();
afpStatus = l.getAfpStatus();
pubblicatoDashboard = l.getPubblicatoDashboard();
noteAppOwner = l.getNoteAppOwner();
jiraautomationActivation = l.getJiraautomationActivation();
repoAvailability = l.getRepoAvailability();
automationStatus = l.getAutomationStatus();
automationNotes = l.getAutomationNotes();
greenItIndex = l.getGreenItIndex();
onboardingKitClosing = l.getOnboardingKitClosing();
sourceCodeFinalDelivery = l.getSourceCodeFinalDelivery();
linkConfluence = l.getLinkConfluence();
businessCriticality = l.getBusinessCriticality();
devMethodology = l.getDevMethodology();
provider = l.getProvider();
idUtente = l.getUtente().getIdUtente();
idApplicazione = l.getApplicazione().getIdApplicazione();
}
I have three entities, when modifying one of them I need for my DTO the id of the modified entity and the id of the modifier user. But I can't get it into the database because my entity wants the object while the dto wants the ids.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于dto< - >实体转换您可以使用:
转换器< s,t>
和等。您无法将DTO保存在db beacuse中,这不是实体类。
如果您想要具有ID的地图嵌套对象,则可以使用深度映射。
有关更多信息,请参见本文:
https://www.baeldung.com/java-modelmapper 通过其他方法可以使工作更轻松。类似:
服务:
服务实施
For DTO <--> Entity conversion you can use:
Converter<S, T>
and etc.You can't save DTO in DB beacuse it's not an Entity class.
If you want map nested objects with ID, so you can use deep mappings.
See this article for more information:
https://www.baeldung.com/java-modelmapper
If you want to use ModelMapper you can make work easier with additional methods. Something like:
Service:
Service implementation