react中如何将标签翻译成其他语言?搜索引擎优化需要它。在我的程序中,我已经使用了react-i18next
.
Antonio112009's questions
我正在编写一个机器人,我想在execute(...)
一个类之外使用一个函数extend TelegramLongPollingBot
。目前我正在这样做:
new BotName().execute(sendMessage);
在方法中使用此行的示例:
public String sendMessage(PostAPI message){
SendMessage sendMessage = new SendMessage();
sendMessage.setChatId(message.getChatId());
sendMessage.setText(message.getText());
sendMessage.setParseMode(ParseMode.MARKDOWNV2);
try {
Message message1 = new BotName().execute(sendMessage);
} catch (TelegramApiException e) {
e.printStackTrace();
}
return "test";
}
在我看来,这种方法不是最好的,我想知道调用该方法的正确方法execute(...)
我是第一次使用 ReactJS,问题出现了:如何根据页面动态更改 CSS 文件?
例如,我有一个文件:main.css
和about.css
.
进入页面时需要/
交朋友main.css
,并且/about
- about.css
。
我在 filesMain.js
和 in 中导入 css 文件About.js
,当我选择一个页面时,我会得到所有 css 文件(main.css
+ about.css
),但我不需要所有文件。下图显示加载了 4 个文件(Google Font + main.css
+ 2 次加载about.css
),但应该有 2 个文件(Google Font + main.css
)。
网上写了一些关于 的东西bundle-action
,但我不明白如何解决这个问题。
代码示例:
import React, {Component} from 'react';
import {BrowserRouter as Router, Switch, Route} from 'react-router-dom';
import Head from "./components/Head";
import Main from './components/Main';
import About from './components/About';
class App extends Component{
render() {
return (
<Router>
<Head/>
<Switch>
<Route path="/" exact>
<Main/>
</Route>
<Route path="/about">
<About/>
</Route>
</Switch>
</Router>
);
}
}
export default App;
main.js 和 about.js
import React, {Component} from 'react';
import '../css/main.css';
class Main extends Component {
render() {
return (
//некоторый код
);
}
}
export default Main;
import React, {Component} from 'react';
import '../css/about.css';
class About extends Component {
render() {
return (
//некоторый код
);
}
}
export default About;
我不是一个非常有经验的 Git + IntelliJ 用户,但我想知道如何实现以下内容:我向 Git 发送了一个配置文件(一个包含添加我的设置的字段的文件,这样用户就不会创建新的文件),但提交后我想永久粘贴我的数据并禁用此文件以进一步自动添加到 Git,这样我的数据就不会意外进入存储库。
目前,我调用“提交”窗口,取消选中该文件,然后单击“提交”。
该怎么办?
这是 JetBrains 支持的类似问题:我在 gitignore 中有 .idea,但它仍在本地更改中
更新1:
更新 2
git rm --cache <file>
- 这不是一个选项。提交后,文件将从Git
.
背景:
我在几个来源中阅读了有关在使用 Hibernate 时equals()
最好hashcode()
覆盖的内容。以前,我没有遇到过这个,所以我想为自己澄清/找出一些事情。
第 45 条:为什么在实体中避免使用 Lombok @EqualsAndHashCode
这是另一个:
使用 JPA 和 Hibernate 实现 equals、hashCode 和 toString 的最佳方法
这是另一个:
使用 Hibernate 实现 equals() 和 hashCode() 的终极指南
情况:
上面引用的消息来源谈到了如何创建hashCode()
和equals()
. equals()
我了解情况,但hashCode()
不太了解。
我有 2 个,比如说 2 个实体(彼此独立):Author
和Book
.
“禁忌”:
Object.hash(id)
将不起作用,因为id
在将休眠状态发送到数据库后接收到对象。- 我的对象没有
Business Key
or@NaturalId
,因为 字段将不是唯一的
因此,据我了解,解决问题的一种选择hashCode()
是“重写”此方法并手动插入一个数字(int)。最常用的基元,奇数是 31。
问题:
1 - 如何正确发给hashCode()
以下实体?(最好给出这些数字的例子)它表示该数字是否必须满足某些标准,公式等。
2 - 应用程序中创建的所有/几个实体可以具有相同的hashCode(),但风险是什么?
更新1:
作者.java
@Entity
@Getter
@Setter
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String surname;
}
图书.java
@Entity
@Getter
@Setter
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
private String edition;
}
这个想法很简单:我想创建一个 ManyToMany 依赖项,但有一个额外的列。
在我的项目中,我使用Project Lombok,因此@Data
取代了我Getter/Setter/ToString/Equals/Hash.
我的想法 100% 类似于:https ://vladmihalcea.com/the-best-way-to-map-a-many-to-many-association-with-extra-columns-when-using-jpa-and- hibernate/ 但是,这个选项对我不起作用
实体关系图:
测试程序时出现错误:
Caused by: java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails
(`dishdatabase`.`dish_size`, CONSTRAINT `FKqpfda2uojtpf1u243dy0e55fq` FOREIGN KEY (`product_id`) REFERENCES `product` (`id`))
更新 1(2020 年 4 月 25 日):
项目已移至github:https
://github.com/Antonio112009/Many-To-Many_with_extra_column
底部错误已解决,但出现另一个:我可以将一个对象连接到另一个对象,但无法连接相同的多个对象互相打字。问题和错误在github上进行了描述。
org.springframework.orm.jpa.JpaSystemException: Could not set field value [SHORT_CIRCUIT_INDICATOR] value by reflection : [class com.antonio112009.manyToMany.entity.PostTagId.tagId]
setter of com.antonio112009.manyToMany.entity.PostTagId.tagId; nested exception is org.hibernate.PropertyAccessException: Could not set field value [SHORT_CIRCUIT_INDICATOR]
value by reflection : [class com.antonio112009.manyToMany.entity.PostTagId.tagId] setter of com.antonio112009.manyToMany.entity.PostTagId.tagId
下面是我试图在我的项目中实现的代码:
产品.java:
@Entity
@Data
@Table
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "product_generator")
@SequenceGenerator(name="product_generator", sequenceName = "seq_product", allocationSize = 1)
private Long id;
@Column
private String name;
@OneToMany(
mappedBy = "product",
cascade = CascadeType.ALL,
orphanRemoval = true
)
List<DishSize> dishSizes = new ArrayList<>();
public void addDishSize(DishSize dishSize) {
dishSizes.add(dishSize);
dishSize.setProduct(this);
}
public void removeDishSize(DishSize dishSize) {
dishSizes.remove(dishSize);
dishSize.setProduct(null);
}
}
DishSize.java
@Entity
@Data
@Table
public class DishSize implements Serializable {
@Id
@GeneratedValue
private Long id;
private Integer size;
@ManyToOne(fetch = FetchType.LAZY)
private Product product;
@ManyToOne(fetch = FetchType.LAZY)
private Dish dish;
}
菜.java
@Entity
@Data
@Table
public class Dish {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dish_generator")
@SequenceGenerator(name="dish_generator", sequenceName = "seq_dish", allocationSize = 1)
private Long id;
@Column
private String name;
@OneToMany(
mappedBy = "dish",
cascade = CascadeType.ALL,
orphanRemoval = true
)
List<DishSize> dishSizes = new ArrayList<>();
public void addDishSize(DishSize dishSize) {
dishSizes.add(dishSize);
dishSize.setDish(this);
}
public void removeDishSize(DishSize dishSize) {
dishSizes.remove(dishSize);
dishSize.setDish(null);
}
测试我的程序是否失败:
DishRepositoryTest.java
@SpringBootTest
class DishRepositoryTest {
@Autowired
private DishRepository dishRepository;
@Autowired
private ProductRepository productRepository;
private String name = "Цезарь";
@BeforeEach
void setUp() {
productRepository.deleteAll();
dishRepository.deleteAll();
Dish dish = new Dish();
dish.setName(name);
dish.setNotes("тест");
dishRepository.save(dish);
}
@Test
@Transactional
void deleteProductButNotDish(){
String nameProduct = "яблоко";
Integer size = 250;
Product product = new Product();
product.setName(nameProduct);
productRepository.save(product);
product = productRepository.findByNameAndSort(nameProduct, null);
Dish dish = dishRepository.findByName(name);
DishSize dishSize = new DishSize();
dishSize.setDish(dish);
dishSize.setSize(size);
product.addDishSize(dishSize);
dish.addDishSize(dishSize);
dishRepository.save(dish);
//Test
product = productRepository.findByNameAndSort(nameProduct, null);
product.getDishSizes().get(0).getDish().removeDishSize(product.getDishSizes().get(0));
productRepository.save(product);
productRepository.deleteByNameAndSort(nameProduct, null);
dish = dishRepository.findByName(name);
assertNotNull(dish, "checking if dish is not deleted");
assertNull(productRepository.findByNameAndSort(nameProduct, null), "checking if product is deleted");
assertEquals(0, dish.getDishSizes().size(), "checking if dishSize is deleted");
}
}
请告诉我您知道哪些 VPS / 专用服务器 / Web 托管服务提供商,说明它们的优缺点,这些服务器在哪些国家/地区可用。
我有一个专用的服务器和域example.com
。我已经开发了三个应用程序,我想给在不同端口上的同一台服务器上运行的每个应用程序提供自己的子域:public
,admin
默认情况下
它看起来像这样:
+----------+--------------------+------+-----------------+
| Поддомен | URL | Порт | Приложение |
+----------+--------------------+------+-----------------+
| admin | admin.example.com | 82 | SpringAppAdmin |
| public | public.example.com | 81 | SpringAppPublic |
| - | example.com | 80 | SpringAppMain |
+----------+--------------------+------+-----------------+
如何在 Spring Boot 中注册子域?
我以 Jar 文件的形式将我的应用程序扔到服务器上!
在我的应用程序中,为我的计算机配置了数据库连接数据和静态文件的路径,但我希望我不要打扰不断评论 中的数据application.properties
,而只是程序本身了解它的位置(在服务器上或在计算机上)并获取必要的数据。
例如,要自动路由静态文件,我使用以下配置:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (new File("/path/on/my/computer/file/").isDirectory()) {
registry.addResourceHandler("/data/**").addResourceLocations(
"file:/path/on/my/computer/file/"
);
}
if (new File("/path/on/my/server/files/").isDirectory()) {
registry.addResourceHandler("/data/**").addResourceLocations(
"file:/path/on/my/server/files/"
);
}
// некоторый код...
}
我不认为这个决定是最好的,我认为这是一个拐杖。我想摆脱它。
另一个例子是数据库连接。我将数据移动到一个单独的文件database.properties
中。我认为值得将此文件移到项目外部并设置路径。
目前,我的数据库数据如下所示:
# ==============================================================
# = Data Source
# ==============================================================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/database
spring.datasource.username=userRemote
spring.datasource.password=password1
#spring.datasource.username=userLocal
#spring.datasource.password=password2
这样的问题:当我尝试实现这段代码时,里面的所有东西都用红色下划线,我不知道如何修复它:
main.instagram.subscribe=Подпишись на нас в Instagram
<h1 class="text-header-3" th:utext="#{main.instagram.subscribe} + '<a href="#" class="text-color-orange">@example</a>'">
</h1>
在我的应用程序中,我使用三种语言:
- 英语
- 俄语
- 爱沙尼亚语(例如)
通过转到以下结尾的链接来更改语言:******/?lang=en
, ******/?lang=ee
, ******/?lang=ru
。
选择其他语言或编写随机变量时,我的页面被翻译成“默认语言”(我在中配置WebMvcConfig.java
),但是(在胸腺中)的变量${#locale.language}
与URL中指定的变量保持不变,也就是说写在 URL..../?lang=random
中,在 -attribute 中会是<html ... lang="random">
这样
问题:如果用户在 URL 中为变量输入随机值,我怎样才能做到这一点lang
,我的程序会为这个变量分配默认语言(在我的情况下为 - ru
)?
WebMvcConfig.java:
public class WebMvcConfig implements WebMvcConfigurer {
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:local/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver resolver = new SessionLocaleResolver();
resolver.setDefaultLocale(Locale.forLanguageTag("ru"));
return resolver;
}
@Bean
public LocaleChangeInterceptor localeInterceptor() {
LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
localeInterceptor.setParamName("lang");
return localeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeInterceptor());
}
}
主.html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org"
th:lang="${#locale.language}">
如果您需要更多信息 - 在评论中写下它。
告诉我一个编辑器,我可以将其添加到我的网站,以便我可以在其中创建文章。我们需要一个类似 StackOverflow (WMD) 的编辑器,最好是在服务器上安装编辑器的链接/在代码中
编辑器必须支持上传图片到本站!
我用 Spring (Java) 编写,所以我不为 WordPress 或 npm 和 Node.js 提供插件
编写了一个函数来使用jQuery-ajax
. 一切似乎都是正确的,但它给出了 404 错误。
.js 文件:
function json(itemId, quantity, type) {
let item = {};
item["id"] = itemId;
item["path"] = window.location.pathname;
item["quantity"] = quantity;
$.ajax({
type: "POST",
url: "/test/ajax",
data: JSON.stringify(item),
dataType: "json",
contentType: 'application/json',
success: function (e) {
console.log("success!!!")
},
error: function (e) {
console.log("Error!!!")
},
done: function (e) {
console.log("Done!!!")
}
})
}
我有桌子Product
,,,,Category
。在下面的 HQL 查询之后,我在页面上显示了几种语言而不是一种。Translation
Language
我知道我正在做一个 HQL 查询 ala:
“找到一个Products
来自该类别并包含该语言的对象。”
但我需要“找到一个Product
具有这样那样类别的对象并显示该类别的语言 - ru
”。
这是我的 HQL 代码:
@Repository
public interface ProductRESTRepository extends CrudRepository<Product, Long> {
List<Product> findAll();
@Query("SELECT prod FROM Product as prod left join prod.category as trans where prod.category.defaultName = ?1 and trans.language.code like ?2")
List<Product> findProductsByCategoryName(String category, String language);
}
以下是它在屏幕上的显示方式:
我没有看到我在BindResult.rejectValue(...)
之后输入的错误redirect
。代码本身正在运行,程序成功地获取表单,成功处理它,但没有redirect
错误数据保存到另一个(在本例中为上一个)页面。如何解决?
百里香代码:
<form th:action="@{/account/general/edit/name}" class="form-edit" method="post">
<div th:if="${#fields.hasErrors('customer.name')}" class="form-edit">
<span th:errors="*{customer.name}"></span>
</div>
<div>
<span>Имя</span>
<input type="text" th:value="${customer.name}" th:field="*{customer.name}">
</div>
<div th:if="${#fields.hasErrors('customer.surname')}" class="form-edit">
<span th:errors="*{customer.surname}"></span>
</div>
<div>
<span>Фамилия</span>
<input type="text" th:value="${customer.surname}" th:field="*{customer.surname}">
</div>
<input type="submit" value="Сохранить">
</form>
上面页面的 Java 控制器:
@Controller
@RequestMapping("/account/general/edit")
public class GeneralInformationEditController {
@GetMapping
public ModelAndView GeneralInformationEditGet(){
ModelAndView modelAndView = new ModelAndView();
//некоторый код
Customer customer = generalService.findByEmail(email);
modelAndView.addObject("customer", customer);
modelAndView.setViewName("account/edit/general_information_edit");
return modelAndView;
}
}
表单传递到的 Java 控制器:
@Controller
@RequestMapping("/account/general/edit/name")
public class NameEdit {
@PostMapping
public ModelAndView NameEditPost(@ModelAttribute("customer") Customer customerForm, BindingResult bindingResult){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:/account/general/edit");
//checkers
if(customerForm.getName().length() > 18 || customerForm.getName().length() < 2){
//Недостаточно символов. Должно быть между 2 и 18
bindingResult.
rejectValue("name", "error.name",
"Неправильное количество символов. Количество букв должно быть от 2 до 18.");
}
//checkers
if(customerForm.getSurname().length() > 18 || customerForm.getSurname().length() < 2){
//Недостаточно символов. Должно быть между 2 и 18
bindingResult.
rejectValue("surname", "error.surname",
"Неправильное количество символов. Количество букв должно быть от 2 до 18.");
}
if(bindingResult.hasErrors()){
System.out.println("ошибки");
return modelAndView;
}
//некоторый код, если ошибок нет
return modelAndView;
}
}
使用 Hibernate(不是在春天!!!!!!),我和你们中的许多人一样,懒得手动设置数据库。在项目中使用自动文件搜索和自动配置很好。一切都会好的,但是在 Github 上需要一个新项目,但我不想显示登录名、密码和 URL。
需要一个示例代码,其中 Hibernate 将获取主文件和机密文件并在程序启动时自动配置。
目前我正在使用hibernate.cfg.xml
,但application.properties
也接受了答案。
我的(工作)代码示例:
HibernateUtil.java:
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
public class HibernateUtil {
private static StandardServiceRegistry registry;
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
try {
// Create registry
registry = new StandardServiceRegistryBuilder().configure().build();
// Create MetadataSources
MetadataSources sources = new MetadataSources(registry);
// Create Metadata
Metadata metadata = sources.getMetadataBuilder().build();
// Create SessionFactory
sessionFactory = metadata.getSessionFactoryBuilder().build();
} catch (Exception e) {
e.printStackTrace();
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
return sessionFactory;
}
public static void shutdown() {
if (registry != null) {
StandardServiceRegistryBuilder.destroy(registry);
}
}
}
休眠.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<!--SERVER-->
<!--<property name="connection.url">jdbc:mysql://localhost:3306/db?useSSL=false&autoReconnect=true&createDatabaseIfNotExist=true&</property>-->
<property name="connection.username">USERNAME</property>
<property name="connection.password">PASSWORD</property>
<property name="connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
<property name="hibernate.hikari.connectionTimeout">20000</property>
<property name="hibernate.hikari.minimumIdle">10</property>
<property name="hibernate.hikari.maximumPoolSize">20</property>
<property name="hibernate.hikari.idleTimeout">300000</property>
<!-- JDBC connection pool settings ... using built-in test pool -->
<property name="connection.pool_size">1</property>
<!-- Select our SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
<!-- Echo the SQL to stdout -->
<property name="show_sql">false</property>
<!--<property name="show_sql">true</property>-->
<!-- Set the current session context -->
<property name="current_session_context_class">thread</property>
<!-- Drop and re-create the database schema on startup -->
<!--<property name="hbm2ddl.auto">create</property>-->
<!--<property name="hbm2ddl.auto">create-drop</property>-->
<!--<property name="hbm2ddl.auto">update</property>-->
<property name="hbm2ddl.auto">validate</property>
<!-- dbcp connection pool configuration -->
<property name="hibernate.dbcp.initialSize">5</property>
<property name="hibernate.dbcp.maxTotal">20</property>
<property name="hibernate.dbcp.maxIdle">10</property>
<property name="hibernate.dbcp.minIdle">5</property>
<property name="hibernate.dbcp.maxWaitMillis">-1</property>
<!--<mapping class="entities.User" />-->
<!--<mapping class="entities.Servers" />-->
<!--<mapping class="entities.Authorities" />-->
<!--<mapping class="entities.Language" />-->
<!--<mapping class="entities.ServerMessage" />-->
<!--<mapping class="entities.MessageServer" />-->
</session-factory>
</hibernate-configuration>
对JS中代码的实现感兴趣。当您单击增加/减少按钮时,此按钮旁边的文本必须更改。我使用 id 制作了一个变体,但这适用于单个应用程序。如何为多个按钮做到这一点?
Codepen 上的代码: https ://codepen.io/anon/pen/wVqapG
JS代码:
var $span = $('#input');
//increase
$('#product-button-increase').click(function () {
if (Number($span.text()) === 100) {
return;
}
$span.text(Number($span.text()) + 1);
});
//decrease
$('#product-button-decrease').click(function () {
if (Number($span.text()) === 1) {
return;
}
$span.text(Number($span.text()) - 1);
});
var $span = $('#input');
//increase
$('#product-button-increase').click(function () {
if (Number($span.text()) === 100) {
return;
}
$span.text(Number($span.text()) + 1);
});
//decrease
$('#product-button-decrease').click(function () {
if (Number($span.text()) === 1) {
return;
}
$span.text(Number($span.text()) - 1);
});
@import url('https://fonts.googleapis.com/css?family=Roboto&display=swap');
.product-to-basket {
width: 90px;
height: 26px;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
justify-content: space-between;
flex-direction: row;
margin-bottom: 15px;
background-color: #fff;
border-radius: 36px;
border: 1px solid #f79a3d;
}
.product-to-basket > .ptb-button {
cursor: pointer;
width: 28px;
height: 28px;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
background-color: #f79a3d;
border-radius: 36px;
border: none;
}
.product-to-basket > .ptb-button > span {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.product-to-basket > span {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
font-family: 'Roboto', sans-serif;
line-height: 14px;
font-size: 14px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div class="product-to-basket">
<div class="ptb-button" id="product-button-decrease">
<span>-</span>
</div>
<span id="input">1</span>
<div class="ptb-button" id="product-button-increase">
<span>+</span>
</div>
</div>
<div class="product-to-basket">
<div class="ptb-button" id="product-button-decrease">
<span>-</span>
</div>
<span id="input">1</span>
<div class="ptb-button" id="product-button-increase">
<span>+</span>
</div>
</div>
<div class="product-to-basket">
<div class="ptb-button" id="product-button-decrease">
<span>-</span>
</div>
<span id="input">1</span>
<div class="ptb-button" id="product-button-increase">
<span>+</span>
</div>
</div>
<div class="product-to-basket">
<div class="ptb-button" id="product-button-decrease">
<span>-</span>
</div>
<span id="input">1</span>
<div class="ptb-button" id="product-button-increase">
<span>+</span>
</div>
</div>
<div class="product-to-basket">
<div class="ptb-button" id="product-button-decrease">
<span>-</span>
</div>
<span id="input">1</span>
<div class="ptb-button" id="product-button-increase">
<span>+</span>
</div>
</div>
我有一个 Customer 对象,它有一个 Addresses 对象,其中包含一个门牌号。如何按门牌号获取客户列表?
正如我大致看到的那样:
@Repository
public interface CustomerRepository extends CrudRepository<Customer, Long> {
List<Customer> findByAddressesWhereHouseNumber(int houseNumber);
}
我有两个实体
:
-Trader.java
Stockmarket.java
我正在使用@ManyToMany 注释,包含股票市场列表的交易者保存对我有用,但包含交易者列表的股票市场保存不起作用。
交易者.java
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "trader")
public class Trader {
@Id
@GeneratedValue
@Column(name = "trader_id")
private Long id;
@Column(name = "trader_name")
private String traderName;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "TRADER_STOCKMARKET",
joinColumns = { @JoinColumn(name = "trader_id") },
inverseJoinColumns = { @JoinColumn(name = "stockmarket_id") })
private List<Stockmarket> stockmarket;
}
股票市场.java
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "stockmarket")
public class Stockmarket{
@Id
@GeneratedValue
@Column(name = "stockmarket_id")
private Long id;
@Column(name = "stockmarket_name")
private String stockmarketName;
@ManyToMany(mappedBy="stockmarket")
private List<Trader> traders;
}
控制器:
(MySQL 已经有 2 个交易者和 2 个交易所。)
Stockmarket stockmarket3 = new Stockmarket();
stockmarket3.setStockmarketName("Marvel");
List<Trader> allTraders = manyToManyBiService.findAllTraders();
System.out.println("\n\n\n finally " + allTraders.toString() + "\n\n\n ");
stockmarket3.setTraders(allTraders);
manyToManyBiService.saveStockmarket(stockmarket3);
额外的东西,如果它们有助于解决问题
多对多BiService.java:
@Service
public class ManyToManyBiService {
@Autowired
StockmarketRepository stockmarketRepository;
@Autowired
TraderRepository traderRepository;
public void saveTrader(Trader trader){
traderRepository.save(trader);
}
public void saveStockmarket(Stockmarket stockmarket){
stockmarketRepository.save(stockmarket);
}
public Stockmarket findByNameStockmarket(String name){
return stockmarketRepository.findByStockmarketName(name);
}
public List<Stockmarket> findAllStockmarket(){
return stockmarketRepository.findAll();
}
public List<Trader> findAllTraders(){
return traderRepository.findAll();
}
}
StockmarketRepository 和 TraderRepository 是扩展 CrudRepository 的接口。