2015-03-02 2 views
0

я мой проект, я должен классаOneToMany, org.hibernate.QueryException: не удалось разрешить свойство

@Entity 
@Table(name = "asset") 
public class Asset extends BaseEntity { 
private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "last_position") 
private Position lastPosition; 

/**contructor, getter, setter method, other field etc..**/ 
} 

и другой класс

@Entity 
@Table(name = "position") 
@EntityListeners(EntityChangeCallback.class) 
public class Position extends BaseEntity { 
private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
private Long id; 

@OneToMany(mappedBy="lastPosition") 
private List<Asset> assets; 

/**contructor, getter, setter method, other field etc..**/ 
} 

Доступ к данным объекта, как этот

public abstract class BaseDaoImp<E extends Indexable> implements BaseDao<E> { 
@PersistenceContext 
protected EntityManager em; 
/**some thing else**/ 
@SuppressWarnings("unchecked") 
public List<E> list() { 
    Query qry = em.createQuery("from " + getType().getSimpleName() + " u"); 
    return qry.getResultList(); 
} 
} 

, когда я запускаю код. Я получаю ошибку

Вызванный: java.lang.IllegalArgumentException: org.hibernate.QueryException: не удалось разрешить свойство: lastPositionId из: com.abc.server.db.entity.Asset [ОТ ком .abc.server.db.entity.Position pos WHERE pos.deviceId IN ('100 000000001000', '100000000001001', '100000000001002') И pos.id IN (ВЫБРАТЬ asset.lastPositionId FROM com.tma.ats.am .server .db.entity.Asset актив)]

Я нашел проблему в спящем режиме генерации запроса с полем name lastPositionId Вместо lastPosition. Я меняю имя поля из lastPosition на lastPositionId. Все работает Хорошо. Но я читал много примеров в Интернете и из своего собственного проекта. Все остальные поля могут отображать @ManyToOne Ok, и им не нужен идентификатор Postfix. Как я могу сделать над кодом работу с именем поля lastPosition (не lastPositionId)? Благодарим за помощь.

ответ

0

В вашем файле конфигурации jpa xml есть свойство hibernate.hbm2ddl.auto. Измените его значение для создания или создания-падения, чтобы применить новые изменения.

Смежные вопросы