1

I have two entities Order and Customer. Order is

@Entity
@Table(name = "orders")
@Audited(targetAuditMode = RelationTargetAuditMode.AUDITED)
public class Order {

    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private Long id;


    @Audited(withModifiedFlag = true)
    private Double price;

    @Temporal(TemporalType.TIMESTAMP)
    private Calendar createdDate;

    @OneToOne
    private Customer customer;

    public Order() {
    }

    ...................

And Customer entity :

@Entity
@Audited
public class Customer {

    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private Long id;

    private String fullname;

    public Customer() {
    }

Now I want to create query that selects Order whose related customer has given fullname . For now I created such query:

auditReader.createQuery().forRevisionsOfEntity(Order.class, true, true).add(AuditEntity.property("customer.fullname").eq("Jhon Smith")).getSingleResult();

But it throws an exception:

org.hibernate.QueryException: could not resolve property: customer of: org.baeldung.HibernateAuditDemo.model.Order_AUD [select e__ from org.baeldung.HibernateAuditDemo.model.Order_AUD e__ where e__.customer.fullname = :_p0 order by e__.originalId.REV.id asc]
        at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:83)
Volodymyr Levytskyi
  • 407
  • 1
  • 6
  • 15

1 Answers1

0

You can use mappedBy attribute to map one-to-one releationship.

@Entity
@Table(name = "orders")
public class Order {


    .....

    @OneToOne(mappedBy="orders")
    private Customer customer;

    ......




 @Entity
 @Audited
 public class Customer {

    @Id
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private Long id;

    private String fullname;

    @OneToOne
    @JoinColumn(name = "my_order")
    private Order order;
    ....

..

Sai prateek
  • 11,842
  • 9
  • 51
  • 66