E ai galera, estou com um mega problema aqui no trabalho, eu tenho um serviço que starta um job, assim que esse job inicia ele procura por um XML e roda um script que está contido nele, nesse script eu estou tentando instanciar uma classe e salvar um objeto de maneira tradicional no groovy, ele não me retornar nenhum tipo de erro, inclusive a verificação if(obj.save()){} passa tranqüilamente, mas ao olhar no banco, não há nada!!
Minha pergunta é: é possível instanciar um objeto e persistir ele no banco através de um JOB. \
só uma observação, se eu der um get em um registro existente no banco, eu consigo modificar ele e salvar normalmente, o problema é em criar uma nova instância = Classe obj = new Classe() ou def obj = Classe.newInstancia()
conseguir resolver meu problema com bd e os jobs, dar uma olhada:
public class SchedulerJobs {
public SchedulerJobs() {
// TODO Auto-generated constructor stub
}
public static void main(String[]args) {
//neste caso a cada 1 min
Trigger trigger = TriggerUtils.makeSecondlyTrigger(30);
trigger.setName("jobdb");
/*dou informacoes qual classe ele deve chamar
ou seja, o trabalho a ser feito
*/
JobDetail jobDetail = new JobDetail("save db", PersistDB.class);
try{
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
//info o job a ser feito e de em qto em qto tempo passando o trigger
scheduler.scheduleJob(jobDetail, trigger);
//peco para iniciar
scheduler.start();
}catch (SchedulerException e) {
e.printStackTrace();
}
}
}
public class UsuarioQuartzDao extends DAO {
public void save(Usuario us){
begin();
getSession().save(us);
try{
commit();
}catch (Exception e) {
e.printStackTrace();
}
}
}
public class PersistDB implements Job{
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
UsuarioQuartzDao usuariodao = new UsuarioQuartzDao();
Usuario usuario = new Usuario();
usuario.setEmail("camilo@");
usuario.setNome("lopesff");
usuario.setSenha("123");
usuario.setTipo("admin");
usuariodao.save(usuario);
System.out.println(new Date());
}
}
[code]
public class DAO {
static final SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
public static Session getSession(){
Session session = sessionFactory.getCurrentSession();
return session;
}
public static void begin(){
getSession().beginTransaction();
}
public static void commit(){
getSession().getTransaction().commit();
}
public static void rollback(){
getSession().getTransaction().rollback();
}
public static void close(){
getSession().close();
}
E ai pessoal, ainda continuo com o mesmo problema, dei um print no Session atual para ver se o meu objeto estava em sessao e vi que sim ele está lá para ser inserido mas de alguma forma nada acontece, percebi que se eu tentar dar um coomit na mão ele causa o seguinte erro: