Hoe u de slaapstand opgeeft om bepaalde kolommen niet bij te werken

Ik heb een applicatie die een gebruiker de mogelijkheid biedt om bepaalde waarden bij te werken. Ik wil alleen de informatie over die kolommen naar de gebruiker sturen en updates uitvoeren.

Ik wil graag een entiteit overwinteren die is gemaakt op basis van wat ze naar mij hebben verzonden, maar de kolommen waarvan de gebruiker geen toegang heeft, niet bijwerken. Evenzo, als ze een nieuw item aanvragen, wil ik de gegevens die ze me sturen gebruiken en de niet vermelde kolommen instellen op de standaardwaarden van de database.

Is er een eenvoudige manier of beste praktijk om te gebruiken?

Moet ik een tweede toewijzing maken aan de tabel die deze kolommen niet vermeldt?

3

3 antwoord

Ik denk dat ik de property-update = "false" in het toewijzingsbestand zal markeren. Ik zou het leuk vinden om te horen of er een manier is om het per keerpunt te doen, dus als ik iets anders zou schrijven dat deze velden zou moeten veranderen, zou het het kunnen doen.

6
toegevoegd
update = "false" werkt niet voor mijn geval :( EDIT: dit doet het automatisch - het wordt niet bijgewerkt in de database, maar de entiteit voor de slaapstand wordt gelezen met een gewijzigd onjuist veld.
toegevoegd de auteur ITisha, de bron

Als u niet wilt dat die kolommen worden bijgewerkt, hoeft u de setters van die kolommen niet te bellen? Als de kolomzetter niet wordt aangeroepen (of wordt aangeroepen met een nieuwe waarde), wordt de kolom niet bijgewerkt.

U moet het item eerst met slaapstand ophalen, dan de setters naar de juiste kolommen bellen en het vervolgens aanhouden. Op die manier zal de data die u niet wilt veranderen niet veranderen.

1
toegevoegd
Ik denk dat ik dat zou kunnen doen, maar het is een beetje lastig. Ik moet de gegevens opnemen die de gebruiker mij geeft, de record uit de database lezen, een methode schrijven om ze samen te voegen en uiteindelijk de record vasthouden. Ik denk dat gezien het feit dat ik Hibernate gebruik, ik er gemakkelijk vanaf ga. Ik ben het erover eens geworden dat Hibernate extra werk is, maar ik wou dat het geen extra I/O inhield.
toegevoegd de auteur Joe, de bron
Als iets aan de DB-zijde wordt beheerd als een gewijzigde/gemaakte datum met triggers, zijn die gegevens niet beschikbaar om te hiberneren zonder die entiteit opnieuw te selecteren. Het punt van de update = false is om de slaapstand niet door DB-gegenereerde veldwaarden te laten overlappen.
toegevoegd de auteur hsanders, de bron

Gebruik updatable = false in de slaapstand om te voorkomen dat de kolom wordt bijgewerkt.

bv:

@Column(name=CRE_TS, updatable=false)
private Date getCreTs(){
   return this.creTs;
} 
0
toegevoegd