我在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
?
答案 0 :(得分:0)
为ServiceBook创建一个新的@EntityResult,就像使用Car.class一样。我通常这样做是为了将列绑定到属性。