Вчера я нашел это https://github.com/thomasdarimont/sprin ... ter/spring -boot-javafx и добавьте только Spring JPA в мой pom.xml и конфигурацию в application.properties.
POM
Код: Выделить всё
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
5.1.18
< /code>
application.properties
app.ui.title=Spring Boot Java FX Hello World
spring.datasource.url = jdbc:mysql://mysql0.xxx/3450_ps15\?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username = xxx
spring.datasource.password = xxx
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=none
Сервис
Код: Выделить всё
public interface ProductService {
Page
findAll(Pageable pageable);
List findAll();
Long getCount();
}
Код: Выделить всё
@Transactional
public interface ProductRepository extends Repository
{
@Transactional
@Query("Select p from ProductPS p inner join p.productlang lang where lang.lang.id=1")
Page findAll(Pageable pageable);
@Query("Select p from ProductPS p inner join p.productlang lang where lang.lang.id=1")
List findAll();
Long count();
}
< /code>
Реализация службы < /p>
@Component
@Transactional(readOnly=true)
@Service
public class ProductServiceImp implements ProductService{
@Autowired
private ProductRepository productrepository;
@Autowired
public ProductServiceImp(ProductRepository productrepository) {
this.productrepository = productrepository;
}
@Override
@Transactional(readOnly=true)
public Page findAll(Pageable pageable) {
if (!TransactionSynchronizationManager.isActualTransactionActive()) {
throw new IllegalStateException("No active transaction!!!!");
}
return productrepository.findAll(pageable);
}
@Override
@Transactional(readOnly=true)
public List findAll() {
// TODO Auto-generated method stub
return productrepository.findAll();
}
@Override
@Transactional
public Long getCount() {
// TODO Auto-generated method stub
return productrepository.count();
}
}
< /code>
и объект < /p>
private static final long serialVersionUID = -1804619891680745433L;
@Id
@GeneratedValue
@Column(name="id_product")
private Long id;
@Column(name="id_category_default")
private int idCategoryDefault;
private float price;
private String reference;
@OneToMany(mappedBy = "product")
private List stock;
@OneToMany(fetch = FetchType.LAZY,mappedBy = "produkt")
private List productlang;
< /code>
Я использую hibernate.enable_lazy_load_no_trans < /code>, но это займет только некоторые записи, и когда я прокручиваю в TableView следующее, но это нужно много времени. Я добавил < /p>
@EnableTransactionManagement
< /code>
в конфигурации и транзакции работает, но это не я. Это ошибка или я что -то скучаю? Можно ли установить сеанс вручную в данных Spring?
, если некоторые, скажем, используйте страницу, я попробовал < /p>
private Node createPage(int pageIndex) {
int fromIndex = pageIndex * 50;
int toIndex = (int) Math.min(fromIndex + 50, productService.getCount());
Pageable topTen = new PageRequest(fromIndex, toIndex);
table.setItems(FXCollections.observableArrayList(productService.findAll(topTen).getContent()));
return table;
}
Подробнее здесь: https://stackoverflow.com/questions/296 ... and-javafx
Мобильная версия