當我使用JPA繼承表時,我有一個關于 "findAll "的錯誤。
我使Json結果像這樣 ["asdf" : "adf", "asdf" : "asdf"]
但是回傳值是這樣的 [com.example.model.AccountEntity@57af674a]
Controller
@RequestMapping(value = "/getMyInfoall", produces = MediaType.APPLICATION_JSON_VALUE)
public String getMemberall(@RequestBody JSONObject sendInfo) throws IOException {
List user = UserService.findAll()。
JSONObject result = new JSONObject() 。
result.put("data", user);
return result.toJSONString()。
}
服務
public List findAll() {
List users = UserRepository.findAll()。
return users。
}
Repository
@Repository。
public interface UserRepository extends JpaRepository<UserEntity, Long> {
}
Entity
@Entity(name = "Users")
@Inheritance(strategy = InheritanceType.JOINED)
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int userkey;
@Column(nullable = false, unique = true)
private String id;
@Column(nullable = false, length = 50)
private String name;
@Column(nullable = false)
private String password;
@Column(nullable = true)
private String email;
}
@Entity(name = "Account")
public class AccountEntity extends UserEntity{
@Column(nullable = false, unique = true)
private String accountno;
@Column(nullable = true)
private String accountname;
@Column(nullable = false)
private int accountpw;
@Column(nullable = false)
private long balance。
}```
uj5u.com熱心網友回復:
我強烈建議使用Spring默認的HTTPMessageConverters,例如,Jackson用于JSON。
從一個串列中建立一個JSON-array
。但是你也可以使用JSON.org的輕量級庫,如JSON-java README上的指導:
- 將
List轉換為陣列,例如:UserEntity[]。
- 從這個Java陣列創建一個
JSONArray。
- 使用
toString()方法回傳這個JSON-array representation格式化為String。
List<UserEntity> userList = // a list returned from your database/repo
UserEntity[] myArr = userList.toArray(new UserEntity[userList.size()]); //將此轉換為陣列。
//這里只需遵循JSON的指南。
JSONArray jArr = new JSONArray(myArr)。
//回傳JSON-array作為字串。
return jArr.toString();
uj5u.com熱心網友回復:
你應該將你的UserEntity物件轉換為UserDto DTO,然后在你的控制器中回傳。依靠Jackson而不是由你管理和創建的JSONObject。
public class UserDto {
private String id;
private String name;
}
你的服務應該做的映射:
public List<UserDto> findAll(){
List<UserEntity> users = UserRepository.findAll();
return users.stream().map(user -> // your mapping logic to UserDto object);
而你的控制器只需要回傳它:
public List<UserDto> getMemberall( JSONObject sendInfo) throws IOException {
return UserService.findAll()。
}
你可以用JSONObject sendInfo做類似的事情,用你自己的物件替換它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/329866.html
標籤:
上一篇:在Windows上為docker容器安裝SSLCA證書
下一篇:支持Vercel私有子模塊
