简体   繁体   English

Java:@Overridden toString()不输出任何内容

[英]Java: @Overridden toString() doesn't prints anything

I have an @Entity as 我有一个@Entity作为

@Entity
@Table(name = "variable")
@XmlRootElement
public class Variable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(unique = true, nullable = false)
    private String name;

    @Column
    @Enumerated(EnumType.STRING)
    private VariableType type;

    @Column(nullable = false)
    private String units;

    @Column
    private String description;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created_on", nullable = false)
    private Date createdOn;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "retired_on", nullable = true)
    private Date retiredOn;

    @Column(nullable = false)
    private boolean core;

    public Variable(@Nonnull final String name,
                    @Nonnull final VariableType type,
                    @Nonnull final String units,
                    @Nonnull final String description,
                    @Nonnull final Date createdOn,
                    @Nonnull final boolean core) {
        this.name = name;
        this.type = type;
        this.units = units;
        this.description = description;
        this.core = core;
        this.createdOn = createdOn;
    }

    @Nonnull
    public long getId() {
        return id;
    }

    @Nonnull
    public String getName() {
        return name;
    }

    @Nonnull
    public VariableType getType() {
        return type;
    }

    @Nonnull
    public String getUnits() {
        return units;
    }

    @Nullable
    public String getDescription() {
        return description;
    }

    @Nonnull
    public Date getCreatedOn() {
        return createdOn;
    }

    @Nonnull
    public Date getRetiredOn() {
        return retiredOn;
    }

    @Nonnull
    public boolean isCore() {
        return core;
    }

    @Override
    public String toString() {
        return new StringBuilder().
                append("id="+id+" ").
                append("name="+name+" ").
                append("type="+type+" ").
                append("units="+units+" ").
                append("description="+description+" ").
                append("createdOn="+createdOn+" ").
                append("retiredOn="+retiredOn+" ").
                append("core="+core+" ").
                toString();
    }
}

and a VariableManager which creates the @Entity instance 和一个VariableManager ,它创建@Entity实例

public Variable createVariable(@Nonnull final String name,
                                   @Nonnull final VariableType type,
                                   @Nonnull final String units,
                                   @Nonnull final String description,
                                   @Nonnull final boolean core) {
        final Variable variable =  variableCrudService.create(new Variable(name, type, units, description, new Date(), core));
        LOGGER.info("added variable - ", variable);
        return variable;
    }

When I execute this, I get logging information as 当我执行此操作时,我得到的日志信息为

14:18:12,320 INFO  [org.jboss.resteasy.cdi.CdiInjectorFactory] (http--127.0.0.1-8080-4) Found BeanManager at java:comp/BeanManager
14:18:13,336 INFO  [com.bb.business.VariableManager] (http--127.0.0.1-8080-4) added variable - 

I do not know why toString doesn't print the state of the object even though I can see that the Variable is created in database. 我不知道为什么toString不能打印对象的状态,即使我可以看到变量是在数据库中创建的。

From your code, I can't tell what type of logger you are using (based on the method signature of info(), it does not appear to be a log4j nor a java.util logger), but I suspect that calling 从您的代码中,我无法确定您使用的是哪种类型的记录器(基于info()的方法签名,它似乎不是log4j也不是java.util记录器),但是我怀疑调用

LOGGER.info("added variable - " + variable);

instead of 代替

LOGGER.info("added variable - ", variable);

(note the plus sign instead of the comma) may do it. (请注意加号而不是逗号)可以做到这一点。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM