0

テーブルをエンティティ クラスにマップし、hql クエリを使用しようとしていました。私は Eclipse で作業しており、Hibernate コンソールで HQL クエリを実行しようとしました。クエリは期待どおりの結果を出していましたが、アプリケーションをデプロイするとエラーが発生しました:

    org.hibernate.exception.SQLGrammarException:
could not initialize a collection: [com.alu.mdm.entities.firmware.FirmwareImage.properties#3014]

     ORA-00904: "PROPERTIES0_"."FIRMWARE": invalid identifier

SQL が有効になっているログを見たとき、次のようなクエリを見つけました。

select properties0_.FIRMWARE_ID as FIRMWARE4_23_1_,
properties0_.firmware as firmware1_,
properties0_.firmware as firmware19_0_,
properties0_.NAME as NAME19_0_,
properties0_.VALUE as VALUE19_0_ 
from FW_PROPERTIES properties0_ 
where properties0_.FIRMWARE_ID=?

私は2つのテーブルを持っています。1つはFIRMWAREIMAGEで、もう1つはFW_PROPERTIESです。これは次のようになります

@Table(name = "FIRMWARE_IMAGE",uniqueConstraints=
@UniqueConstraint(columnNames = {"IMAGE_NAME"}))
@org.hibernate.annotations.Table(appliesTo = "FIRMWARE_IMAGE")
public class FirmwareImage extends PersistentObject {

@Id
@Column(name = "ID")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="FIRMWARE_IMAGE_SEQUENCE")
private Long id;

@Column(name = "IMAGE_NAME", nullable = false)
private String name;

@OneToMany(fetch = FetchType.EAGER)
@Cascade({CascadeType.ALL, CascadeType.DELETE_ORPHAN})
@JoinColumn(name="FIRMWARE_ID")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "com.alu.mdm.entities.firmware")
private Set<FirmwareImageProperty> properties  = new LinkedHashSet<FirmwareImageProperty>();

//いくつかのゲッターとセッター

私の FW_PROPERTIES エンティティ クラスは次のようなものです

@Entity
@Table(name="FW_PROPERTIES", uniqueConstraints=@UniqueConstraint(columnNames=       {"FIRMWARE_ID","NAME","VALUE"}))
@org.hibernate.annotations.Table(appliesTo="FW_PROPERTIES")
public class FirmwareImageProperty extends Persistence implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 5574911511734379510L;


@Id
@PrimaryKeyJoinColumns(value={@PrimaryKeyJoinColumn(name="FIRMWARE_ID"), @PrimaryKeyJoinColumn(name="NAME")})



@ManyToOne(optional=true)
@JoinColumn(name="FIRMWARE_ID" , nullable=false)
@ForeignKey(name="FK_FW_PROPERTIES_FIRMWARE_ID")
private FirmwareImage firmware;


@Column(name="NAME")
private String name;

@Lob
@Column(name="VALUE")
private String value;

  //Some getters and setters

私のHQLクエリは「SELECT fw FROM FirmwareImage fw left join fw.properties as fp」です

なぜその例外が発生するのかわかりません。誰かが解決策を提案してください。

4

1 に答える 1

0

@annotation を getter に移動します。たとえば、

private String name;

@Column(name="NAME")
public String getName(){
     return name;
}
于 2013-04-15T19:03:21.060 に答える