Lỗi: Path expected for join!
Vì sao lỗi <code class="markdown-inline">Path expected for join!</code> xảy ra với đoạn query dưới đây:<div class="markdown-block position-relative overflow-auto source-java">
<pre>
"SELECT e FROM UserGroupMember e <span class="pl-s">"</span> +
"INNER JOIN UserGroup a ON e.userGroupId = a.id <span class="pl-s">"</span> +
"INNER JOIN EzyCRMEventUserGroup b ON a.id = b.userGroupId <span class="pl-s">"</span> +
"INNERJOIN EzyCRMEvent c ON b.eventId = c.id <span class="pl-s">"</span> +
"INNER JOIN DataMapping d ON c.id = d.toDataId <span class="pl-s">"</span> +
"INNER JOIN EzyCRMUserGroup f ON d.fromDataId = f.id <span class="pl-s">"</span> +
"INNER JOIN EzyCRMEventUserGroup g ON f.id = g.userGroupId <span class="pl-s">"</span> +
"WHERE e.userId IN ?1 <span class="pl-s">"</span> +
"AND a.groupType = <span class="pl-s">'MATCH'</span> <span class="pl-s">"</span> +
"AND a.status = ?2 <span class="pl-s">"</span> +
"AND c.eventType = <span class="pl-s">'ROUND'</span> <span class="pl-s">"</span> +
"AND d.mappingName = <span class="pl-s">'player_group_round'</span> <span class="pl-s">"</span> +
"AND f.groupType = <span class="pl-s">'AGE_GROUP'</span> <span class="pl-s">"</span> +
"AND g.eventId = ?0 <span class="pl-s">"</span> +
"ORDER BY e.id DESC"
</pre>
</div><p>
Lỗi:
</p>
<div class="markdown-block position-relative overflow-auto source-java">
<pre>
Path expected <span class="pl-k">for</span> join! [SELECT e FROM org.youngmonkeys.ezycrm.entity.UserGroupMember e INNER JOIN org.youngmonkeys.ezycrm.entity.UserGroup a ON e.userGroupId = a.id INNER JOIN org.youngmonkeys.ezycrm.entity.EzyCRMEventUserGroup b ON a.id = b.userGroupId INNER JOIN org.youngmonkeys.ezycrm.entity.EzyCRMEvent c ON b.eventId = c.id INNER JOIN org.youngmonkeys.ezyplatform.entity.DataMapping d ON c.id = d.toDataId INNER JOIN EzyCRMUserGroup f ON d.fromDataId = f.id INNER JOIN org.youngmonkeys.ezycrm.entity.EzyCRMEventUserGroup g ON f.id = g.userGroupId WHERE e.userId IN ?1 AND a.groupType = <span class="pl-s">'MATCH'</span> AND a.status = ?2 AND c.eventType = <span class="pl-s">'ROUND'</span> AND d.mappingName = <span class="pl-s">'player_group_round'</span> AND f.groupType = <span class="pl-s">'AGE_GROUP'</span> AND g.eventId = ?0 ORDER BY e.id DESC]
</pre>
</div>
Bàn về cách ezy trả response
@Override<p>
protected void execute() throws EzyBadRequestException {
</p>
<p>
if (message.length() > 255) {
</p>
<p>
throw new EzyBadRequestException(ChatErrors.MESSAGE_TOO_LONG, "message too long");
</p>
<p>
}
</p>
<p>
ChatChannelUsers channelUsers =
</p>
<p>
channelUserService.getChannelUsers(channelId, user.getName());
</p>
<p>
if (channelUsers == null) {
</p>
<p>
throw new EzyBadRequestException(ChatErrors.CHANNEL_NOT_FOUND, "channel with id: " + channelId + " not found");
</p>
<p>
}
</p>
<p>
messageService.save(new ChatMessage(
</p>
<p>
maxIdService.incrementAndGet(ChatEntities.CHAT_MESSAGE),
</p>
<p>
true, message, channelId, user.getName(), clientMessageId
</p>
<p>
));
</p>
<p>
responseFactory.newObjectResponse()
</p>
<p>
.command(CHAT_USER_MESSAGE)
</p>
<p>
.param("from", user.getName())
</p>
<p>
.param("message", message)
</p>
<p>
.param("channelId", channelId)
</p>
<p>
.usernames(channelUsers.getUsers())
</p>
<p>
.execute();
</p>
<p>
}
</p>
<p>
Đoạn code trên xử lý request và gửi response cho user. Tuy nhiên e có thắc mắc là tại sao mình ko thiết kế để return 1 cái response entity (ví dụ bên spring) hoặc 1 dto màcác lại return void và để việc response cho developer?
</p>
<p>
Nếu như e có 1 concurrent map/list để cache user lại và sau đó bốc bừa 1 vài user ra để gửi thì sẽ có vấn đề không?
</p>
<p>
Tệ hơn nữa, nếu e cache lại responseFactory và dùng nó cùng với list user để spam message thì có ổn không?
</p>
<p>
Regards
</p>
excel-object-mapper
Làm sao để mapping dữ liệu từ file excel sang object java chuẩn và thuận tiện cho việc mở rộng và validate dữ liệu từ file excel để lưu database.
Lỗi font khi đọc từ file properties trong spring boot
Em chào mọi người
<p>
</p>
<p>
Em đọc dữ liệu từ file properties của spring bị lỗi font Dự án - > D? �n
</p>
<p>
</p>
<p>
có cách nào để đọc không bị lỗi font không ạ
</p>
<p>
</p>
<p>
em đã thử các ví dụ tại <a href="https://www.baeldung.com/java-string-encode-utf-8 " target="_blank">https://www.baeldung.com/java-string-encode-utf-8 </a> cũng không được
</p>
<p>
</p>
<p>
Em cảm ơn
</p>
Cách truy vấn và xử lý dữ liệu lớn trong Oracle(table khoảng 50M record)
chào mọi người.
<p>
</p>
<p>
Em có một module xử lý bất đồng bộ nhiều tập user(khoảng 2-3M user mỗi tập), mỗi tập user cần truy vấn(với các điều kiện khác nhau tùy vào tập user đó) trong bảng user(có khoảng 50M record). Nếu Mỗi lần xử lý một tập user bất kỳ thì em sẽ truy vấn cả tập user lên chương trình nhưng khi đó việc truy vấn rất chậm và tràn bộ nhớ chương trình nên em có định sẽ cache các id của các tập user đó vào redis theo từng batch và xử lý từng batch user id, để lấy được user cần xử lý thì em sẽ truy vấn theo id(vì id có index nên em nghĩ sẽ nhanh hơn) và không tràn bộ nhớ. Mn thấy cách này có ổn không và có cách nào nhanh hơn không ạ?
</p>
Không submit được File trên postman
Em chào mọi người
<p>
Em đang submit file từ postman để test thì gặp log trên
</p>
<p>
Em cần config gì thêm ở API hay tool postman k ạ
</p>
<p>
em cảm ơn
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<img class="content-img" src="https://stackask.com/wp-content/uploads/2023/02/Screenshot-2023-02-03-160203.jpg" /><img class="content-img" src="https://stackask.com/wp-content/uploads/2023/02/Screenshot-2023-02-03-160125.jpg" />
Synchronous Redis trong Spring boot
chào mn, em có sử dụng Redis trong project của mình. Hiện tại em có 2 module cần thao tác trên một tập thuê bao với tốc độ nhanh(vì nếu truy vấn dưới database thì rất chậm do dữ liệu nhiều).Em hướng sẽ cache hết tập thuê bao này trên Redis. em có 2 hướng:
<ol>
<li>chỉ cache id và sau đó sẽ truy vấn theo từng id(id có index nên em nghĩ sẽ nhanh)</li>
<li>cache cả toàn bộ thông tin nhưng như thế nếu thuê bao cập nhật thông tin thì trên cache sẽ phải đồng bộ như nào.</li>
</ol>
<ul>
<li>cả 2 đều phải lấy dữ liệu kiểu đồng bộ thì trong Java có thư viện nào hỗ trợ không ạ?</li>
<li>Nếu cache trên redis mà redis sập, dữ liệu bị mất đi thì phải làm sao ạ?</li>
<li>Mn còn ý tưởng nào hay thì góp ý giúp em với :D</li>
</ul>
kafka serializer và deserializer
hi mn, em đang sử dụng kafka cho sản phẩm của mình. Về việc ser/des thì trong dự án thực tế thì mn hay dùng cách nào để ser/des vậy ạ? em tính sử dụng avro nhưng lại phải cài thêm schema registry vậy nên dùng Json/Protobuf/Avro sẽ tốt hơn ạ?
Convert cron
Em convert cron sang ngày, thì ngày convert ra cách ngày hiện tại 1 tuần
<p>
Cron: 0 23 16 ? <em>THU
</em>
- 2023/01/19 16:23:00
</p>
<p>
</p>
<ul>
<li>2023/01/12 16:28:00
</li></ul>
<p>
Làm cách nào để lấy được ngày giờ hiện tại của cron vậy ạ
</p>
<p>
Code
</p>
<p>
</p>
<pre>
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:00");
LOGGER.info("Cron: " + emailConfig.getTimeSendMail());
CronExpression cronExpression = CronExpression.parse("0 23 16 ? * THU");
LocalDateTime nextRunDate = cronExpression.next(LocalDateTime.now());
LOGGER.info(dtf.format(nextRunDate));
LocalDateTime current = LocalDateTime.now();
LOGGER.info(dtf.format(current));
</pre>
Formet String to Json
em chào mọi người làm sao để format chuỗi string thành chuỗi json vậy ạ
<p>
em sài json note đọc dữ liệu xuất ra:
</p>
<p>
</p>
<pre>
nationality": {"code": "","description": ""}
</pre>
dữ liệu mong muốn
<pre>
nationality": {
"code": "",
"description": ""
}
</pre>
Lấy File tài liệu sau khi nén.
Anh ơi làm sao để lấy File zip trả ra đó để gửi vào tài liệu khi gửi Mail ạ. Hiện tại em đang xuất fle ra 1 ổ mặc định còn xuất ra file để thêm vào tài liệu đính kèm email thì mình làm cách nào ạ. Code:
<p>
</p>
<pre>
public void zipFiles(){
FileOutputStream fos = null;
ZipOutputStream zipOut = null;
FileInputStream fis = null;
try {
File folder = new File("D:\\Data\\attachment");
File[] attachFiles = folder.listFiles();
fos = new FileOutputStream("C:\\Users\\admin\\Desktop\\tai-lieu\\testing.zip");
zipOut = new ZipOutputStream(new BufferedOutputStream(fos));
for(File file: attachFiles){
fis = new FileInputStream(file);
ZipEntry ze = new ZipEntry(file.getName());
System.out.println("Zipping the file: "+file.getName());
zipOut.putNextEntry(ze);
byte[] tmp = new byte[1024];
int size = 0;
while((size = fis.read(tmp)) != -1){
zipOut.write(tmp, 0, size);
}
zipOut.flush();
fis.close();
}
zipOut.close();
System.out.println("Done... Zipped the files...");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try{
if(fos != null) fos.close();
} catch(Exception ex){
}
}
}
</pre>
Nén nhiều file tài liệu
Em chào mọi người
<p>
</p>
<p>
Cho em hỏi là làm cách nào để giảm kích thước file sau khi nén ạ.
</p>
<p>
Em nén xong thì kích thước file tài liệu bằng tất kích thước các file cộng lại. Code:
</p>
<p>
</p>
<pre>
public void zipFiles(){
FileOutputStream fos = null;
ZipOutputStream zipOut = null;
FileInputStream fis = null;
try {
File folder = new File("D:\\Data\\attachment");
File[] attachFiles = folder.listFiles();
fos = new FileOutputStream("C:\\Users\\admin\\Desktop\\tai-lieu\\testing.zip");
zipOut = new ZipOutputStream(new BufferedOutputStream(fos));
for(File file: attachFiles){
fis = new FileInputStream(file);
ZipEntry ze = new ZipEntry(file.getName());
System.out.println("Zipping the file: "+file.getName());
zipOut.putNextEntry(ze);
byte[] tmp = new byte[1024];
int size = 0;
while((size = fis.read(tmp)) != -1){
zipOut.write(tmp, 0, size);
}
zipOut.flush();
fis.close();
}
zipOut.close();
System.out.println("Done... Zipped the files...");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try{
if(fos != null) fos.close();
} catch(Exception ex){
}
}
}
</pre>