HHH-16577 Add test for issue
This commit is contained in:
parent
dc52fe6ef4
commit
54fbe10116
|
@ -0,0 +1,178 @@
|
|||
package org.hibernate.orm.test.bytecode.enhancement.dirty;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
import org.hibernate.annotations.DynamicUpdate;
|
||||
|
||||
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
import org.hibernate.testing.orm.junit.JiraKey;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import jakarta.persistence.CascadeType;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.OneToOne;
|
||||
|
||||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
|
||||
|
||||
@RunWith(BytecodeEnhancerRunner.class)
|
||||
public class DynamicUpdateTest extends BaseCoreFunctionalTestCase {
|
||||
|
||||
public static final Long STUFF_TO_PAY_ID = 1l;
|
||||
public static final Long PAYMENT_ID = 2l;
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getAnnotatedClasses() {
|
||||
return new Class[] {
|
||||
Payment.class,
|
||||
StuffToPay.class
|
||||
};
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
inTransaction(
|
||||
session -> {
|
||||
Payment payment = new Payment(PAYMENT_ID);
|
||||
payment.setFee( new BigDecimal( 42 ) );
|
||||
payment.setTransactionNumber( "1234567890" );
|
||||
|
||||
StuffToPay stuffToPay = new StuffToPay(STUFF_TO_PAY_ID);
|
||||
stuffToPay.setPayment( payment );
|
||||
session.persist( stuffToPay );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
@JiraKey("HHH-16577")
|
||||
public void testSetAttribute() {
|
||||
inTransaction(
|
||||
session -> {
|
||||
StuffToPay stuffToPay = session.find( StuffToPay.class, STUFF_TO_PAY_ID );
|
||||
stuffToPay.confirmPayment();
|
||||
Payment payment = stuffToPay.getPayment();
|
||||
payment.getTransactionNumber();
|
||||
assertThat( payment.getPaidAt() ).isNotNull(); }
|
||||
);
|
||||
|
||||
inTransaction(
|
||||
session -> {
|
||||
Payment payment = session.find( Payment.class, PAYMENT_ID );
|
||||
assertThat(payment).isNotNull();
|
||||
assertThat(payment.getPaidAt()).isNotNull();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Entity
|
||||
@DynamicUpdate
|
||||
public static class Payment {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
private BigDecimal fee;
|
||||
|
||||
private LocalDate paidAt;
|
||||
|
||||
private String transactionNumber;
|
||||
|
||||
public Payment() {
|
||||
}
|
||||
|
||||
public Payment(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
void confirmPayment(LocalDate when) {
|
||||
this.paidAt = when;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public BigDecimal getFee() {
|
||||
return fee;
|
||||
}
|
||||
|
||||
public void setFee(BigDecimal fee) {
|
||||
this.fee = fee;
|
||||
}
|
||||
|
||||
public LocalDate getPaidAt() {
|
||||
return paidAt;
|
||||
}
|
||||
|
||||
public void setPaidAt(LocalDate paidAt) {
|
||||
this.paidAt = paidAt;
|
||||
}
|
||||
|
||||
public String getTransactionNumber() {
|
||||
return transactionNumber;
|
||||
}
|
||||
|
||||
public void setTransactionNumber(String transactionNumber) {
|
||||
this.transactionNumber = transactionNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@Entity
|
||||
@DynamicUpdate
|
||||
public static class StuffToPay {
|
||||
|
||||
@Id
|
||||
private Long id;
|
||||
|
||||
private String description;
|
||||
|
||||
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
|
||||
private Payment payment;
|
||||
|
||||
public StuffToPay() {
|
||||
}
|
||||
|
||||
public StuffToPay(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public void confirmPayment() {
|
||||
payment.confirmPayment( LocalDate.now() );
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Payment getPayment() {
|
||||
return payment;
|
||||
}
|
||||
|
||||
public void setPayment(Payment payment) {
|
||||
this.payment = payment;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue