Autor
Mensagem
Me parece não estar 100% legal, pois sua página está:
<h:inputTextarea readonly=true rows=5 cols=60 value=#{mBEvent.selectedEvent.body}/>
E na entidade está assim:
@Lob
@Column(name = body_utf8)
private byte[] bodyUtf8;
Como é seu getter, desse atributo?
Tenta potsra também os fontes de mBEvent, principalmente esse atributo selectedEvent e seu método getBody
att Davi
<h:inputTextarea readonly=true rows=5 cols=60 value=#{mBEvent.selectedEvent.body}/>
E na entidade está assim:
@Lob
@Column(name = body_utf8)
private byte[] bodyUtf8;
Como é seu getter, desse atributo?
Tenta potsra também os fontes de mBEvent, principalmente esse atributo selectedEvent e seu método getBody
att Davi
Bom dia,
Segue o código...
@ManagedBean
@RequestScoped
public class MBEvent implements Serializable {
private Event selectedEvent;
public MBEvent() {
}
public Event getSelectedEvent() {
return selectedEvent;
}
public void setSelectedEvent(Event selectedEvent) {
this.selectedEvent = selectedEvent;
}
public List<Event> getAllEvent() throws ClassNotFoundException, SQLException {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(Mysql);
EntityManager em = emf.createEntityManager();
Query q = em.createNamedQuery(findAll);
List<Event> events = q.getResultList();
em.close();
emf.close();
return events;
}
}
@Entity
@Table(name = event)
@XmlRootElement
@NamedQueries({
@NamedQuery(name = findAll, query = SELECT e FROM Event e)
})
public class Event implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected EventPK eventPK;
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
public byte[] getBody() {
return body;
}
public void setBody(byte[] body) {
this.body = body;
}
}
Segue o código...
@ManagedBean
@RequestScoped
public class MBEvent implements Serializable {
private Event selectedEvent;
public MBEvent() {
}
public Event getSelectedEvent() {
return selectedEvent;
}
public void setSelectedEvent(Event selectedEvent) {
this.selectedEvent = selectedEvent;
}
public List<Event> getAllEvent() throws ClassNotFoundException, SQLException {
EntityManagerFactory emf = Persistence.createEntityManagerFactory(Mysql);
EntityManager em = emf.createEntityManager();
Query q = em.createNamedQuery(findAll);
List<Event> events = q.getResultList();
em.close();
emf.close();
return events;
}
}
@Entity
@Table(name = event)
@XmlRootElement
@NamedQueries({
@NamedQuery(name = findAll, query = SELECT e FROM Event e)
})
public class Event implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected EventPK eventPK;
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
public byte[] getBody() {
return body;
}
public void setBody(byte[] body) {
this.body = body;
}
}
Olha o que eu perguntei desde o começo, vc salva um array de bytes:
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
E ai vc quer salvar um texto ou um array de bytes?
Se for um array de bytes ai trabalhará com arquivo se for texto deve trocar para String
att Davi
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
E ai vc quer salvar um texto ou um array de bytes?
Se for um array de bytes ai trabalhará com arquivo se for texto deve trocar para String
att Davi
Davi,
Eu havia entendido sua pergunta, mas acho q fui infeliz na resposta..
É assim, estou montando uma página que exiba o conteúdo da tabela event do mysql. Essa tabela é onde ficam armazenados os jobs que utilizo para algumas manutenções em minha base.
Crio esses jobs com um comando do próprio mysql, e ele armazenha minha instrução nesse campo. A principio e pelo que entendo esse conteúdo sempre será um texto (script sql), e pelo que eu entendo (posso perfeitamente estar errado) estão usando lob prevendo que a instrução pode conter um script grande.
Bom, aí começou meu problema não consigo mostrar o conteúdo desse campo na página... se eu tiver que converter ou ler os bytes do lob para posteriormente convertê-los em texto e exibi-los no textarea eu não sei onde devo encaixar essa lógica.
Entendeu? Se puder me orientar eu agradeço...
Obrigado por enqto e abraços
Eu havia entendido sua pergunta, mas acho q fui infeliz na resposta..
É assim, estou montando uma página que exiba o conteúdo da tabela event do mysql. Essa tabela é onde ficam armazenados os jobs que utilizo para algumas manutenções em minha base.
Crio esses jobs com um comando do próprio mysql, e ele armazenha minha instrução nesse campo. A principio e pelo que entendo esse conteúdo sempre será um texto (script sql), e pelo que eu entendo (posso perfeitamente estar errado) estão usando lob prevendo que a instrução pode conter um script grande.
Bom, aí começou meu problema não consigo mostrar o conteúdo desse campo na página... se eu tiver que converter ou ler os bytes do lob para posteriormente convertê-los em texto e exibi-los no textarea eu não sei onde devo encaixar essa lógica.
Entendeu? Se puder me orientar eu agradeço...
Obrigado por enqto e abraços
Vai resolver facilmente seu problema se vc alterar:
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
para
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private String body;
Desse modo pode conter grande quantidades de caracteres, pode ficar tranquilo
att Davi
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private byte[] body;
para
@Basic(optional = false)
@NotNull
@Lob
@Column(name = body)
private String body;
Desse modo pode conter grande quantidades de caracteres, pode ficar tranquilo
att Davi
E no banco como está essa coluna?
Pq se vc tiver em homologação, o problema aconteceu pq vc salvou como array.
Se ainda vai entrar em produção, pode fazer o teste de inserir um e consultar q vai funcionar beleza, o problema que está ai é pq foi salvo como array de bytes
att Davi
Pq se vc tiver em homologação, o problema aconteceu pq vc salvou como array.
Se ainda vai entrar em produção, pode fazer o teste de inserir um e consultar q vai funcionar beleza, o problema que está ai é pq foi salvo como array de bytes
att Davi
Fiz com conversor customizdo e funcionou, o que vc acha dessa solução???
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value == null) return unnamed;
byte[] bytes = (byte[]) value;
String body = new String(bytes);
return body;
}
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value == null) return unnamed;
byte[] bytes = (byte[]) value;
String body = new String(bytes);
return body;
}








