带@Embedded的@SqlResultSetMapping

时间:2015-07-17 14:09:49

标签: java hibernate jpa

我在Hibernate中映射嵌入字段存在问题。 这是代码:

@Entity
@Table(name="CAR")
@SqlResultSetMapping(name = "carMapping",
entities = {
    @EntityResult(entityClass = Car.class,
fields = {
    @FieldResult(name = "id", column = "ID"),
    @FieldResult(name = "producer", column = "PRODUCER"),
    @FieldResult(name = "model", column = "MODEL"),

    @FieldResult(name="bookNumber",column="SERVICE_BOOK_NUMBER"),
    @FieldResult(name="owner", column="SERVICE_BOOK_OWNER")
}
)})
public class Car {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="ID")
private Long id;

@Column(name="PRODUCER")
private String producer;

@Column(name="MODEL")
private String model;

@Embedded
@AttributeOverrides({
    @AttributeOverride(name="bookNumber", column=@Column(name="SERVICE_BOOK_NUMBER")),
    @AttributeOverride(name="owner", column=@Column(name="SERVICE_BOOK_OWNER")),
})
private ServiceBook serviceBook;

当我尝试检索汽车时,我收到以下错误:

javax.ejb.EJBTransactionRolledbackException: The transaction has been marked rollback only 
because the bean encountered a non-application exception :javax.persistence.PersistenceException : 
org.hibernate.exception.SQLGrammarException: Column 'SERVICE4_0_0_' not found

我的问题是:是否可以同时使用@SqlResultSetMapping@Embedded

1 个答案:

答案 0 :(得分:0)

为ServiceBook创建一个新的@EntityResult,就像使用Car.class一样。我通常这样做是为了将列绑定到属性。