Ajuda com sentença HQL

3 respostas
cris.t

Olá,

Tenho a seguinte tabela:

Estou tentando fazer uma sentença hql que retorne a imagem principal de um determinado produto:

Em SQL essa senteça ficaria mais ou menos assim:

Preciso transformar essa setença para HQL e estou tendo alguns problemas, fiz de varias maneiras mas não está dando certo, acho que talvez vou precisar mudar o mapeamento do banco:

Se alguem puder me ajudar!!!

3 Respostas

renanreismartins

amigo vc quer fazer uma hql e esta pensando em banco… tente pensar em objetos… poste o codigo das suas classes

caso sua entidade produto tenha uma associação com image, é soh recuperar um produto e depois dar um getImage();

ex:

SELECT p FROM Produto p WHERE p.id = :id
Image img = p.getImage();

abrassssss

cris.t

Essa é minha classe Image, ela tem um produto relacionado.

@Entity
@Table(name = "image", schema = "public")
public class Image implements java.io.Serializable {
	private static final long serialVersionUID = -1157901456504415463L;

	private Long id;
	private Product product;
	private String name;
	private byte[] image;
	private boolean main;

	public Image() {
	}

	public Image(Product product, String name, byte[] image, boolean main) {
		this.product = product;
		this.name = name;
		this.image = image;
		this.main = main;
	}

	@SequenceGenerator(name = "generator", sequenceName = "seq_image", allocationSize=1)
	@Id
	@GeneratedValue(strategy = SEQUENCE, generator = "generator")
	@Column(name = "id", unique = true, nullable = false)
	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "product_code", nullable = false)
	public Product getProduct() {
		return this.product;
	}

	public void setProduct(Product product) {
		this.product = product;
	}

	@Column(name = "name", nullable = false, length = 30)
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Column(name = "image", nullable = false)
	public byte[] getImage() {
		return this.image;
	}

	public void setImage(byte[] image) {
		this.image = image;
	}

	@Column(name = "main", nullable = false)
	public boolean isMain() {
		return this.main;
	}

	public void setMain(boolean main) {
		this.main = main;
	}
}
renanreismartins

entao vc pode fazer:

e passar um produto como parametro

abrassssss

Criado 6 de outubro de 2009
Ultima resposta 6 de out. de 2009
Respostas 3
Participantes 2