admin管理员组文章数量:1387358
when executing this test: i'm using hibernate 5 and spring 5.3.32 and jakart.persistence
Config Class
package x;
import java.util.Properties;
import .springframework.orm.hibernate5.LocalSessionFactoryBean;
import .springframework.scheduling.annotation.EnableAsync;
import .springframework.context.annotation.AnnotationConfigApplicationContext;
import .springframework.context.annotation.Bean;
import .springframework.context.annotation.Configuration;
import .springframework.context.annotation.PropertySource;
import com.zaxxer.hikari.HikariConfig;
import javax.sql.DataSource;
import .springframework.transaction.annotation.EnableTransactionManagement;
import .springframework.beans.factory.annotation.Value;
import com.zaxxer.hikari.HikariDataSource;
import .springframework.orm.hibernate5.HibernateTransactionManager;
import .springframework.transaction.PlatformTransactionManager;
import .hibernate.cfg.Environment;
import .hibernate.SessionFactory;
import x.dao.SingerDao;
import x.dao.SingerDaoImpl;
import .springframework.context.annotation.ComponentScan;
public class hibe {
public static void main(String ...args){
AnnotationConfigApplicationContext ctx=new AnnotationConfigApplicationContext(cfg.class);
SingerDao singerDao=ctx.getBean(SingerDao.class);
singerDao.findAll().forEach(s->System.out.println(s));
}
}
@Configuration
@ComponentScan(basePackages="x")
@EnableAsync
//@EnableAsync
@PropertySource("classpath:db/jdbc.properties")
@EnableTransactionManagement
class cfg{
@Value("${jdbc.username}")
String username;
@Value("${password}")
String password;
@Value("${driverClassName}")
String driverClassName;
@Value("${url}")
String url;
@Bean(destroyMethod = "close")
DataSource dataSource(){
HikariConfig cfg=new HikariConfig();
cfg.setPassword(password);
cfg.setUsername(username);
cfg.setDriverClassName(driverClassName);
cfg.setJdbcUrl(url);
HikariDataSource ds=new HikariDataSource(cfg);
ds.setMaximumPoolSize(25);
return ds;
}
@Bean
Properties hibernateProperties(){
Properties hibernateProp=new Properties();
hibernateProp.put(Environment.HBM2DDL_AUTO, "none");
hibernateProp.put(Environment.FORMAT_SQL, false);
hibernateProp.put(Environment.USE_SQL_COMMENTS, false);
hibernateProp.put(Environment.SHOW_SQL, false);
hibernateProp.put(Environment.MAX_FETCH_DEPTH, 3);
hibernateProp.put(Environment.STATEMENT_BATCH_SIZE, 10);
hibernateProp.put(Environment.STATEMENT_FETCH_SIZE, 50);
hibernateProp.put(Environment.DIALECT, ".hibernate.dialect.OracleDialect");
return hibernateProp;
}
@Bean
LocalSessionFactoryBean sessionfactory(){
LocalSessionFactoryBean ls=new LocalSessionFactoryBean();
ls.setDataSource(dataSource());
ls.setPackagesToScan("x.entities");
ls.setHibernateProperties(hibernateProperties());
return ls;
}
@Bean PlatformTransactionManager transactionManager(){
var tm=new HibernateTransactionManager();
tm.setSessionFactory(sessionfactory().getObject());
return tm;
}
}
Singer Entity
package x.entities;
import jakarta.persistence.MappedSuperclass;
import java.io.Serial;
import java.io.Serializable;
import jakarta.persistence.Column;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.Version;
import jakarta.persistence.GenerationType;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import java.util.*;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Table;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.OneToMany;
import jakarta.persistence.JoinTable;
import jakarta.persistence.CascadeType;
import java.io.Serial;
@Entity()
@Table(name="SINGER")
public class Singer{
@Serial
public static final long serialVersionUID=3L;
protected String firstname;
protected String lastname;
protected Date birthDate;
//protected Set<Album> albums=new HashSet<>();
//protected Set<Instrument> instruments;
// @ElementCollection(targetClass=Integer.class)
@Column(name="first_name")
public String getFirstname(){
return firstname;
}
@Column(name="last_name")
public String getLastname(){
return lastname;
}
@Column(name="BIRTH_DAT")
public Date getBirthDat(){
return birthDate;
}
public void setLastname(String lastname){
this.lastname=lastname;
}
public void setFirstName(String firstname){
this.firstname=firstname;
}
public void setBirthDate(Date birthDate){
this.birthDate=birthDate;
}
/*
@ManyToMany
@JoinTable(name="singer_instrument",joinColumns=@JoinColumn(name="singer_id"),
inverseJoinColumns=@JoinColumn(name="instrument_iD"))
public Set<Instrument> getInstruments(){
return instruments;
}
public void setInstrument(Instrument insr){
getInstruments().add(insr);
}
public void setInstruments(Set<Instrument> insr){
instruments=insr;
}
public void removeInstrument(Instrument insr){
getInstruments().remove(insr);
}
@OneToMany(mappedBy="singer",cascade=CascadeType.ALL,orphanRemoval=true)
public Set<Album> getAlbums(){
return albums;
}
public void setAlbum(Album album){
album.setSinger(this);
albums.add(album);
}
public void setAlbums(Set<Album> albums){
this.albums=albums;
}
public void removeAlbum(Album album){
getAlbums().remove(album);
}*/
protected int id;
protected int version;
@Column(name="id")
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public int getId(){
return id;
}
@Version
@Column(name="version")
public int getVersion(){
return version;
}
public void setId(int id){
this.id=id;
}
public void setVersion(int version){
this.version=version;
}
}
DAO
package x.dao;
import x.entities.Singer;
import java.util.*;
import .springframework.transaction.annotation.Transactional;
import .hibernate.Session;
import .hibernate.SessionFactory;
import .springframework.stereotype.Repository;
import .hibernate.Query;
@Transactional(readOnly=true)
@Repository("singerDaoImpl")
public class SingerDaoImpl implements SingerDao {
SessionFactory sessionFactory;
public SingerDaoImpl(SessionFactory sf){
sessionFactory=sf;
}
@Transactional
public List<Singer> findAll(){
Session session=sessionFactory.getCurrentSession();
System.out.println("\n\n\n\n\n"+Singer.class.getSimpleName()+"\n\n\n\n\n\n");
Query query=session.createQuery(" FROM " + Singer.class.getSimpleName() + " e ");
return query.list();
}
public List<Singer> findAllWithAlbum(){
return new ArrayList<>();
}
public Singer findById(Long id){
return new Singer();
}
public Singer save(Singer singer){
return new Singer();
}
public void delete(Singer singer){
}
}
so when executing the findAll() method it return this:
12:10:27.411 [main] WARN .hibernate.hql.internal.QuerySplitter -- HHH000183: no persistent classes found for query class: FROM Singer e 12:10:27.416 [main] DEBUG .springframework.orm.hibernate5.HibernateTransactionManager -- Initiating transaction commit 12:10:27.416 [main] DEBUG .springframework.orm.hibernate5.HibernateTransactionManager -- Committing Hibernate transaction on Session [SessionImpl(594463953)] 12:10:27.416 [main] DEBUG .hibernate.engine.transaction.internal.TransactionImpl -- committing 12:10:27.416 [HikariPool-1 connection adder] DEBUG com.zaxxer.hikari.pool.HikariPool -- HikariPool-1 - Added connection oracle.jdbc.driver.T4CConnection@21ebd3c7 12:10:27.419 [main] DEBUG .springframework.orm.hibernate5.HibernateTransactionManager -- Closing Hibernate Session [SessionImpl(594463953)] after transaction
本文标签: javano persistent classes found for query class from Singer sStack Overflow
版权声明:本文标题:java - no persistent classes found for query class: from Singer s - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744502679a2609409.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论